<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Julius Beckmann &#187; Whiz</title>
	<atom:link href="http://juliusbeckmann.de/blog/category/php/whiz-framework/feed" rel="self" type="application/rss+xml" />
	<link>http://juliusbeckmann.de/blog</link>
	<description>Ich bin nicht verrückt, nur technisch begabt ...</description>
	<lastBuildDate>Wed, 05 Jun 2013 11:02:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Whiz: Simple cURL PHP wrapper class</title>
		<link>http://juliusbeckmann.de/blog/whiz-simple-curl-php-wrapper-class.html</link>
		<comments>http://juliusbeckmann.de/blog/whiz-simple-curl-php-wrapper-class.html#comments</comments>
		<pubDate>Wed, 04 May 2011 15:08:51 +0000</pubDate>
		<dc:creator>Julius</dc:creator>
				<category><![CDATA[Whiz]]></category>
		<category><![CDATA[BSD]]></category>
		<category><![CDATA[Class]]></category>
		<category><![CDATA[cURL]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://juliusbeckmann.de/blog/?p=816</guid>
		<description><![CDATA[I worked on a project where i needed to handle a lot with cURL request. At first i tried to use Zend_Http_Client, but it was too limited for my purpose. So i wrote my own cURL handler php class. I tried to keep the class as simple as possible, but it should be universal and [...]]]></description>
			<content:encoded><![CDATA[<p>I worked on a project where i needed to handle a lot with cURL request. At first i tried to use Zend_Http_Client, but it was too limited for my purpose. So i wrote my own cURL handler php class.<br />
<span id="more-816"></span></p>
<p>I tried to keep the class as simple as possible, but it should be universal and powerfull enough for easy handling. Some ideas i had before writing code:</p>
<h3>Thoughts</h3>
<ul>
<li>Methods should be named like the curl_* PHP functions</li>
<li>Using CURL* constants and values directly</li>
<li>External access to the handle</li>
<li>curl_multi_* possible</li>
<li>Straight forward, no extra logic where possible</li>
<li>Using all curl_* functions available</li>
</ul>
<h3>Code</h3>
<p>You can find the code on github;<br />
<a href="https://github.com/JuliusBeckmann/Whiz-Framework/blob/master/Whiz/Http/Client/Curl.php">https://github.com/JuliusBeckmann/Whiz-Framework/blob/master/Whiz/Http/Client/Curl.php</a><br />
License is new BSD.</p>
<h3>Examples</h3>
<p>Instead of explaining the code now, i just give a example using as much methods possible:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="kw2">&lt;?php</span><br />
<span class="co1">// cURL options can be found here:</span><br />
<span class="co1">// http://php.net/manual/en/function.curl-setopt.php</span></p>
<p><span class="kw1">require_once</span><span class="br0">&#40;</span><span class="st_h">'Whiz/Http/Client/Curl.php'</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="co1">// Set cURL options via constructor</span><br />
<span class="re0">$curl</span> <span class="sy0">=</span> <span class="kw2">new</span> Whiz_Http_Client_Curl<span class="br0">&#40;</span><br />
&nbsp; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span>CURLOPT_REFERER <span class="sy0">=&gt;</span> <span class="st_h">'http://www.google.com/'</span><span class="br0">&#41;</span><br />
<span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="co1">// Set URL via method (This is just to make things easier)</span><br />
<span class="re0">$curl</span><span class="sy0">-&gt;</span><span class="me1">setUrl</span><span class="br0">&#40;</span><span class="st_h">'http://juliusbeckmann.de/'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="co1">// $curl-&gt;exec('http://juliusbeckmann.de/'); would be also possible</span></p>
<p><span class="co1">// Set cURL options via method</span><br />
<span class="re0">$curl</span><span class="sy0">-&gt;</span><span class="me1">setOption</span><span class="br0">&#40;</span>CURLOPT_TIMEOUT<span class="sy0">,</span> 10<span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="co1">// Do the request</span><br />
<span class="re0">$curl</span><span class="sy0">-&gt;</span><span class="me1">exec</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$curl</span><span class="sy0">-&gt;</span><span class="me1">isError</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; <span class="co1">// Error</span><br />
&nbsp; <a href="http://www.php.net/var_dump"><span class="kw3">var_dump</span></a><span class="br0">&#40;</span><span class="re0">$curl</span><span class="sy0">-&gt;</span><span class="me1">getErrNo</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <a href="http://www.php.net/var_dump"><span class="kw3">var_dump</span></a><span class="br0">&#40;</span><span class="re0">$curl</span><span class="sy0">-&gt;</span><span class="me1">getError</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span><br />
&nbsp; <span class="co1">// Success</span><br />
&nbsp; <span class="kw1">echo</span> <span class="re0">$curl</span><span class="sy0">-&gt;</span><span class="me1">getResult</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="co1">// More info about the transfer</span><br />
&nbsp; <span class="co1">// var_dump($curl-&gt;getInfo());</span><br />
&nbsp; <span class="co1">// var_dump($curl-&gt;getHeader());</span><br />
&nbsp; <span class="co1">// var_dump($curl-&gt;getVersion());</span><br />
<span class="br0">&#125;</span></p>
<p><span class="co1">// Close cURL</span><br />
<span class="re0">$curl</span><span class="sy0">-&gt;</span><span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="sy1">?&gt;</span></div>
</div>
<h3>Advanced examples</h3>
<p>And some more advanced example code:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="kw2">&lt;?php</span></p>
<p><span class="kw1">require_once</span><span class="br0">&#40;</span><span class="st_h">'Whiz/Http/Client/Curl.php'</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="co1">// Creating a &quot;template&quot; class by overwriting internal config</span><br />
<span class="kw2">class</span> My_Curl <span class="kw2">extends</span> Whiz_Http_Client_Curl <span class="br0">&#123;</span><br />
&nbsp; protected <span class="re0">$_config</span> <span class="sy0">=</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; CURLOPT_RETURNTRANSFER <span class="sy0">=&gt;</span> <span class="kw4">true</span><span class="sy0">,</span> <br />
&nbsp; &nbsp; CURLOPT_REFERER <span class="sy0">=&gt;</span> <span class="st_h">'http://www.google.com/'</span><br />
&nbsp; <span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="re0">$curl</span> <span class="sy0">=</span> <span class="kw2">new</span> My_Curl<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="re0">$curl</span><span class="sy0">-&gt;</span><span class="me1">setUrl</span><span class="br0">&#40;</span><span class="st_h">'http://juliusbeckmann.de/'</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="co1">// Fetch configured handle</span><br />
<span class="re0">$ch</span> <span class="sy0">=</span> <span class="re0">$curl</span><span class="sy0">-&gt;</span><span class="me1">getHandle</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="co1">// Fetch a copy of the configured handle</span><br />
<span class="co1">// $ch2 = $curl-&gt;copyHandle();</span></p>
<p><span class="co1">// Do with handle what ever you like</span><br />
<span class="co1">// ...</span><br />
<span class="re0">$result</span> <span class="sy0">=</span> <a href="http://www.php.net/curl_exec"><span class="kw3">curl_exec</span></a><span class="br0">&#40;</span><span class="re0">$ch</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="co1">// Put handle and result back in</span><br />
<span class="re0">$curl</span><span class="sy0">-&gt;</span><span class="me1">setFromHandle</span><span class="br0">&#40;</span><span class="re0">$ch</span><span class="sy0">,</span> <span class="re0">$result</span><span class="br0">&#41;</span><span class="sy0">;</span></p>
<p><span class="co1">// Fetch transfer info </span><br />
<span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$curl</span><span class="sy0">-&gt;</span><span class="me1">isError</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; <span class="co1">// Error</span><br />
&nbsp; <a href="http://www.php.net/var_dump"><span class="kw3">var_dump</span></a><span class="br0">&#40;</span><span class="re0">$curl</span><span class="sy0">-&gt;</span><span class="me1">getErrNo</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <a href="http://www.php.net/var_dump"><span class="kw3">var_dump</span></a><span class="br0">&#40;</span><span class="re0">$curl</span><span class="sy0">-&gt;</span><span class="me1">getError</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span><br />
&nbsp; <span class="co1">// Success</span><br />
&nbsp; <span class="kw1">echo</span> <span class="re0">$curl</span><span class="sy0">-&gt;</span><span class="me1">getResult</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; <span class="co1">// More info about the transfer</span><br />
&nbsp; <span class="co1">// var_dump($curl-&gt;getInfo());</span><br />
&nbsp; <span class="co1">// var_dump($curl-&gt;getHeader());</span><br />
&nbsp; <span class="co1">// var_dump($curl-&gt;getVersion());</span><br />
<span class="br0">&#125;</span></p>
<p><span class="co1">// Close cURL</span><br />
<span class="re0">$curl</span><span class="sy0">-&gt;</span><span class="me1">close</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="sy1">?&gt;</span></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://juliusbeckmann.de/blog/whiz-simple-curl-php-wrapper-class.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
