<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>return true;</title>
	<atom:link href="http://xeagle.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://xeagle.wordpress.com</link>
	<description>Kawałek kodu</description>
	<lastBuildDate>Sat, 09 Jan 2010 02:38:32 +0000</lastBuildDate>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='xeagle.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>return true;</title>
		<link>http://xeagle.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://xeagle.wordpress.com/osd.xml" title="return true;" />
	<atom:link rel='hub' href='http://xeagle.wordpress.com/?pushpress=hub'/>
		<item>
		<title>PHP Api &#8211; Zend_XmlRpc</title>
		<link>http://xeagle.wordpress.com/2010/01/09/php-api-zend_xmlrpc/</link>
		<comments>http://xeagle.wordpress.com/2010/01/09/php-api-zend_xmlrpc/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 23:44:46 +0000</pubDate>
		<dc:creator>Eagle</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[Zend_XmlRpc]]></category>

		<guid isPermaLink="false">http://xeagle.wordpress.com/?p=6</guid>
		<description><![CDATA[Ostatnio do stworzenia miałem system zarządzania treścią. Wyjątkowo nie był, to zwykły CMS. Klient potrzebował panel administracyjny do zarządzania kilkunastoma stronami (ale nie o tym będę pisał). Oczywiście najwygodniej było napisać api. Tutaj właśnie pojawił się problem &#8211; nigdy wcześniej nie robiłem niczego podobnego, a wszystko musi mieć ręce i nogi. Po chwili poszukiwań okazało [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=xeagle.wordpress.com&amp;blog=11284857&amp;post=6&amp;subd=xeagle&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Ostatnio do stworzenia miałem system zarządzania treścią. Wyjątkowo nie był, to zwykły CMS. Klient potrzebował panel administracyjny do zarządzania kilkunastoma stronami (ale nie o tym będę pisał).</p>
<p>Oczywiście najwygodniej było napisać api. Tutaj właśnie pojawił się problem &#8211; nigdy wcześniej nie robiłem niczego podobnego, a wszystko musi mieć ręce i nogi. Po chwili poszukiwań okazało się że mam gotowe rozwiązanie. Z pomocą przyszła klasa<a title="Zend_XmlRpc" href="http://framework.zend.com/manual/en/zend.xmlrpc.html"> Zend_XmlRpc</a>.</p>
<p>Klient:</p>
<p><pre class="brush: php; highlight: [1,11];">
$rpc = new Zend_XmlRpc_Client('http://test.client/api/');

$params = array (
'pageid' =&gt; 1,
'title' =&gt; $form-&gt;getValue('title'),
'text' =&gt; $form-&gt;getValue('text')
);

try
{
print_r($rpc-&gt;call('article.add', $params));
}
catch (Exception $e)
{
echo '&lt;pre&gt;';
print_r($rpc-&gt;getLastResponse());
}
</pre></p>
<p>Nic, specjalnego. Podajemy adres[1] i wywołujemy funkcję <code>article.add</code> z parametrami[11]</p>
<p>Lokalne użycie tej funkcji wyglądało by tak:</p>
<p><pre class="brush: php;">
 $cArticle-&gt;add(1, $form-&gt;getValue('title'), $form-&gt;getValue('text'));
</pre></p>
<p>Po stronie serwera też nie znajdziemy sprytnych rzeczy.</p>
<p><pre class="brush: php; highlight: [3,5,9,12];">
$cArticle = new Article($db);

$rpc = new Zend_XmlRpc_Server();
$rpc-&gt;setEncoding('UTF-8')
-&gt;setClass($cArticle, 'article');

//$log = new Zend_Log(new Zend_Log_Writer_Stream('../data/log/rpc.txt'));

$resp = $rpc-&gt;handle();
//$log-&gt;log($rpc-&gt;getRequest(), 1);

echo $resp;
</pre></p>
<p>Na początku warto stworzyć obiekt serwera[3] i dodać do niego używane klasy[5]. Fajnym dodatkiem są przestrzenie nazw. Pozostało nam już tylko wywołać funkcję z odpowiednimi parametrami[9] i wysłać odpowiedź do klienta[12].</p>
<p>Aby rozbudować nasze wspaniałe API wystarczy dodać tylko kilka linijek kodu <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Serwer:</p>
<p><pre class="brush: php; highlight: [2,7];">
$cArticle = new Article($db);
$cUser = new User($db);

$rpc = new Zend_XmlRpc_Server();
$rpc-&gt;setEncoding('UTF-8')
-&gt;setClass($cArticle, 'article')
-&gt;setClass($cUser, 'user');
</pre></p>
<p>Klient:</p>
<p><pre class="brush: php; first-line: 9; highlight: [12];">
try
{
print_r($rpc-&gt;call('article.add', $params));
$rpc-&gt;call('user.add',$userParams));
}
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/xeagle.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/xeagle.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/xeagle.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/xeagle.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/xeagle.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/xeagle.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/xeagle.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/xeagle.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/xeagle.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/xeagle.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/xeagle.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/xeagle.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/xeagle.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/xeagle.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=xeagle.wordpress.com&amp;blog=11284857&amp;post=6&amp;subd=xeagle&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://xeagle.wordpress.com/2010/01/09/php-api-zend_xmlrpc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/cd93e969af83851583428a8b06058978?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Eagle</media:title>
		</media:content>
	</item>
	</channel>
</rss>
