2017 © Pedro Peláez
 

library php_curl

PHP CURL as object-oriented implementation.

image

fightbulc/php_curl

PHP CURL as object-oriented implementation.

  • Friday, October 26, 2012
  • by fightbulc
  • Repository
  • 1 Watchers
  • 1 Stars
  • 38,003 Installations
  • PHP
  • 10 Dependents
  • 0 Suggesters
  • 7 Forks
  • 0 Open issues
  • 2 Versions
  • 6 % Grown

The README.md

PHP_CURL

PHP_CURL is an object-oriented implementation of the PHP's functional CURL interface., (*1)

Basic Usage

Since PHP_CURL allows for method-chaining, the static init method is used to generate an instance of a CURL object (similar to curl_init)., (*2)

<?php

$curl = CURL::init("http://reddit.com/r/php/.json");

?>

We can then set some CURL options:, (*3)

<?php

$curl = CURL::init("http://www.reddit.com/r/php/.json")
            ->setReturnTransfer(TRUE);

?>

All set... functions return an instance of the current CURL object, so you are free to set as many of the options in a row as necessary before executing., (*4)

<?php

$curl = CURL::init("http://www.reddit.com/r/php/.json")
        ->setReturnTransfer(TRUE);

$response = $curl->execute():

?>

All of the functions are close matches to the CURLOPT_* alternatives., (*5)

Comparison to functional cURL

The basic example given in the PHP manual for functional cURL is as follows:, (*6)

<?php

$ch = curl_init("http://www.example.com/");
$fp = fopen("example_homepage.txt", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);
curl_close($ch);
fclose($fp);
?>

We can perform the same operation with PHP_CURL like so:, (*7)

<?php

$fp = fopen("example_homepage.txt", "w");

CURL::init("http://www.example.com/")
    ->setFile($fp)
    ->setHeader(0)
    ->execute()
    ->close();

fclose($fp);

?>

There isn't much of a difference in terms of code-size or performance, however, the PHP_CURL approach is arguably more readible, and less repeatitive., (*8)

One major benefit to using this approach is that it enables us to take advantage of PHP editors with auto-completion, so setting multiple cURL options should be somewhat easier., (*9)

Issues

At present, there is no support for curl_multi.... Support for curl_multi... is coming soon., (*10)

Why do this?

I found that writing for CURL in PHP was repeatitive and cumbersome, and having a quick, object-oriented and more readable way of performing quick CURL tasks was something I've wanted for a while., (*11)

I don't claim to have done anything special here, nor do I propose that this should be used in any sort of production environment. It's quick and dirty, but it's working for me., (*12)

I strongly encoruage any sort of feedback, patches or contributions. I'd be more than happy to open up this project to more developers if there is any demand., (*13)

FAQ

Q. Why CURL::init() instead of new CURL()?, (*14)

A. If you want to take advantage of method-chaining, use CURL::init, since PHP's constructors don't allow for things like (new Curl())->foo()., (*15)

However, if you prefer to instanciate an object and then use that object, support for $foo = new CURL() is allowed. Both will work., (*16)

Q. Couldn't you have just done this with a single __call() wrapper, or use __get() and __set()?, (*17)

This is true, however, a design decision was made to expand all the possible functions to get... and set... functions individually. This means that it's easier for a newcomer to the code to see clearly what methods are available. Not to mention that editors with auto-completion ability aren't often clever enough to discover magic method handling., (*18)

At the end of the day, whether it's handled using PHPDoc paramters and magic methods, or all methods are out there in plain sight, it doesn't make a difference either way, and I feel that if all methods are in plain sight, then there is little to no confusion as to what methods are available., (*19)

The Versions

26/10 2012

dev-master

9999999-dev https://github.com/fightbulc/php_curl

PHP CURL as object-oriented implementation.

  Sources   Download

GPL-3.0

The Requires

  • php >=5.3.3
  • ext-curl *

 

22/10 2012

1.0.0

1.0.0.0 https://github.com/fightbulc/php_curl

PHP CURL as object-oriented implementation.

  Sources   Download

GPL-3.0

The Requires

  • php >=5.3.3