Purli (PHP Url Interface) is the lightweight library with the object-oriented interface for sending HTTP requests.
This package is available via Composer:
{
"require": {
"kajna/purli": "dev-master"
}
}
Minimal example, Purli by default uses CURL handler if available otherwise fallback to the socket.
try {
$purli = (new \Purli\Purli())
->get('http://www.example.com')
->close();
$response = $purli->response();
echo $response->asText();
} catch(\Exception $e) {
echo $e->getMessage();
}
If explicitly set Purli will use PHP sockets to make requests regardless if CURL is installed or not
try {
$purli = (new \Purli\Purli(\Purli\Purli::SOCKET))
->get('http://example.com')
->close();
$response = $purli->response();
echo $response->asText();
} catch(\Exception $e) {
echo $e->getMessage();
}
try {
$data = array('foo' => 'bar');
$purli = (new \Purli\Purli())
->setParams($data)
->post('http://www.example.com')
->close();
$response = $purli->response();
print_r($response->asText());
} catch(\Exception $e) {
echo $e->getMessage();
}
try {
$data = '<root><foo>bar</foo></root>';
$purli = (new \Purli\Purli())
->setUserAgent('curl 7.16.1 (i386-portbld-freebsd6.2) libcurl/7.16.1 OpenSSL/0.9.7m zlib/1.2.3')
->setHeader('Content-Type', 'text/xml')
->setParams($data)
->post('http://www.example.com')
->close();
$response = $purli->response();
print_r($response->asArray());
} catch(\Exception $e) {
echo $e->getMessage();
}
try {
$data = array('foo' => 'bar');
$json = json_encode($data);
$purli = (new \Purli\Purli(\Purli\Purli::SOCKET))
->setConnectionTimeout(3)
->setHeader('Content-Type', 'application/json')
->setParams($json)
->put('http://www.example.com')
->close();
$response = $purli->response();
print_r($response->asObject());
} catch(\Exception $e) {
echo $e->getMessage();
}
try {
$purli = (new \Purli\Purli());
$purli
->setProxy(PROXY_ADDRESS, PROXY_PORT)
->get('http://www.example.com')
->close();
$response = $purli->response();
echo $response->asText();
} catch(\Exception $e) {
echo $e->getMessage();
}
If CURL extension is installed by default Purli will use it, you can always get CURL handler object and set custom option if more flexibility is needed
try {
$purli = (new \Purli\Purli());
if ($purli->getHandlerType() === \Purli\Purli::CURL) {
curl_setopt($purli->getHandler(), CURLOPT_TIMEOUT, 10);
}
$purli
->get('http://www.example.com')
->close();
$response = $purli->response();
echo $response->asText();
} catch(\Exception $e) {
echo $e->getMessage();
}
Purli uses PHPUnit for testing, navigate to project root directory and run command:
cd tests
phpunit
Milos Kajnaco milos@caenazzo.com
Nemanja Nikolic nemanja@massvision.net
Purli is released under the MIT public license.