<?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>knokio &#187; PHP</title>
	<atom:link href="http://knokio.com/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://knokio.com</link>
	<description></description>
	<lastBuildDate>Thu, 26 Jan 2012 18:55:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Live video streaming with PHP</title>
		<link>http://knokio.com/php/live-video-streaming-with-php/</link>
		<comments>http://knokio.com/php/live-video-streaming-with-php/#comments</comments>
		<pubDate>Mon, 18 Oct 2010 19:43:00 +0000</pubDate>
		<dc:creator>Diogo</dc:creator>
				<category><![CDATA[Links]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://knokio.com/php/live-video-streaming-with-php/</guid>
		<description><![CDATA[Picture this. We want to stream live video. In fact don&#8217;t need PHP. We only need a flash player (or HTML5) and our live feed. The problem appear when we need to offer some kind of security. Read the full article<div class="addthis_toolbox addthis_default_style " addthis:url='http://knokio.com/php/live-video-streaming-with-php/' addthis:title='Live video streaming with PHP '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p><span style="color: #ff0000; font-size: small;"><span style="color: #333333; font-family: verdana, tahoma, arial, sans-serif; font-size: 12px; line-height: 19px;">Picture this. We want to stream live video. In fact don&rsquo;t need PHP. We only need a flash player (or HTML5) and our live feed. The problem appear when we need to offer some kind of security.</span></span></p>
<p><span style="color: #ff0000; font-size: small;"><span style="color: #333333; font-family: verdana, tahoma, arial, sans-serif; font-size: 12px; line-height: 19px;"><a href="http://gonzalo123.wordpress.com/2010/09/20/live-video-streaming-with-php/" target="_blank">Read the full article</a></span></span></p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://knokio.com/php/live-video-streaming-with-php/' addthis:title='Live video streaming with PHP '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://knokio.com/php/live-video-streaming-with-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP Plugins</title>
		<link>http://knokio.com/php/cakephp-plugins/</link>
		<comments>http://knokio.com/php/cakephp-plugins/#comments</comments>
		<pubDate>Thu, 14 Feb 2008 18:25:00 +0000</pubDate>
		<dc:creator>Diogo</dc:creator>
				<category><![CDATA[Paper]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.zerone.weblusa.org/life/cakephp-plugins-2/</guid>
		<description><![CDATA[Motivation Where they fail Point #1 Point #2 A Diagram Solution Some code, just for example Conclusion Motivation This paper is intended to try to improve the next version of Cake. I think one of the most important features of a framework is its capacity to be expanded. Plugins achieve that gracefully. But there is [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://knokio.com/php/cakephp-plugins/' addthis:title='CakePHP Plugins '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.zerone.weblusa.org/wp-content/uploads/2008/02/banner.png" alt="banner.png" /></p>
<div class="toc">
<ol>
<li><a href="http://knokio.com/php/cakephp-plugins/#toc-motivation">Motivation</a></li>
<li><a href="http://knokio.com/php/cakephp-plugins/#toc-where-they-fail">Where they fail</a>
<ol>
<li><a href="http://knokio.com/php/cakephp-plugins/#toc-point-1">Point #1</a></li>
<li><a href="http://knokio.com/php/cakephp-plugins/#toc-point-2">Point #2</a></li>
</ol>
</li>
<li><a href="http://knokio.com/php/cakephp-plugins/#toc-a-diagram">A Diagram</a></li>
<li><a href="http://knokio.com/php/cakephp-plugins/#toc-solution">Solution</a>
<ol>
<li><a href="http://knokio.com/php/cakephp-plugins/#toc-some-code-just-for-example">Some code, just for example</a></li>
</ol>
</li>
<li><a href="http://knokio.com/php/cakephp-plugins/#toc-conclusion">Conclusion</a></li>
</ol>
</div>
<h1 id="toc-motivation">Motivation</h1>
<p>This paper is intended to try to improve the next version of Cake. I think one of the most important features of a framework is its capacity to be expanded. Plugins achieve that gracefully. But there is a problem; plugins, as read on <em>tempdocs</em>, are meant to be packages. I think they can be much more. This is mainly a software design problem.</p>
<h1 id="toc-where-they-fail">Where they fail</h1>
<h2 id="toc-point-1">Point #1</h2>
<p>Cake creates conventions for everything turning controllers, models and views universal. Same happens to plugins, but because of namespace concerns it is recommended to developers to include plugins name in controllers, models and views names. So a blog plugin would have BlogPost and BlogComment as models, BlogPosts and BlogComments as controllers. That&#8217;s fine to me (and recommended) but the Router should be smart so it won&#8217;t be necessary URI&#8217;s like /blog/blogPosts.</p>
<h2 id="toc-point-2">Point #2</h2>
<p>Second is its usefulness. I think plugins can be more than just isolated modules. Imagine a plugin that is mutable, just by receiving some variables on runtime. I think every experienced developer has come to a day where he finds himself coding same thing twice. With MVC architecture that is a problem which is 90% of the time solved, but here are exceptions.</p>
<p>This kind of problem appears on relative big websites. Imagine you have <em>Users</em> profile page, which can receive <em>Comments</em>. You also have the <em>Groups</em> page which can also receive <em>Comments</em>. Code can be reused by creating an element and invoking it on the view, passing the right data. That&#8217;s a simple example.</p>
<p>But, what if <em>Users</em> and <em>Groups</em> could have <em>Images</em>. The <em>Images</em> logic would be obviously be present in the Model, but what about all the actions? Could be achieved by /images/view/type:group/23. Still ok to me. But images now have <em>Categories</em>, <em>Tags</em> and <em>Comments</em>. That becomes kind of hard to maintain. Developer is responsible to persist the type and id, for the operations to succeed. A good solution to this problem would be packing all has a plugin, to get all things organized, but the persistent problem would still exist.</p>
<p><span id="more-44"></span></p>
<h1 id="toc-a-diagram">A Diagram</h1>
<p><img src="http://blog.zerone.weblusa.org/wp-content/uploads/2008/02/021408-1925-cakephpplug11.png" alt="" /></p>
<h1 id="toc-solution">Solution</h1>
<p>On the diagram there is an example of a common plugin: blog. Only controllers and their actions are represented, but it illustrates what I&#8217;m trying to say. Both <em>Users</em> and <em>Clans</em> have <em>Blogs</em>. <em>Blog</em> is a plugin. The only difference is that plugin is acting inside other controllers, by receiving simple data on runtime. That data will make the plugin mutable to various sources.</p>
<p>This is also the solution for the problem #2, on the previous chapter.</p>
<h2 id="toc-some-code-just-for-example">Some code, just for example</h2>
<pre name="code" class="php">// plugins/blog/models/blog_post.php

BlogPost extends BlogModel
{
   $belongsTo = array('User'); // User is a global scope Model
   $hasMany = array('BlogCategory', 'BlogTag');
}

// plugins/blog/controllers/blog_posts_controller.php

BlogPostsController extends BlogController
{
   protected $sourceType;
   protected $sourceID;
}</pre>
<pre name="code" class="php">// controllers/user.php

UsersController extends AppController
{
   public $extends = array(
       'profile' =&gt; array('blog', array('sourceType' =&gt; 'user', 'sourceID' =&gt; '#id')),
       'gallery' =&gt; array('gallery', array('sourceID' =&gt; '#id')));

}

// In this example, profile and gallery actions, extend to two different plugins.</pre>
<p>My only concern with the design of this plugins is just one. The overhead of having to load the <em>Users</em> controller and then redirect to <em>Blogs</em> plugin is a waste. This can be avoided with <em>smart extension</em>, which would read (or cache) the extensions of a controller, before loading it.</p>
<h1 id="toc-conclusion">Conclusion</h1>
<p>There are still some code details which need to be improved, but still, the theory is here. I think Cake would win a lot by adding this simple feature. It would turn plugins mutable which would make extensibility easy.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://knokio.com/php/cakephp-plugins/' addthis:title='CakePHP Plugins '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://knokio.com/php/cakephp-plugins/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Objectos Mágicos</title>
		<link>http://knokio.com/php/objectos-magicos/</link>
		<comments>http://knokio.com/php/objectos-magicos/#comments</comments>
		<pubDate>Mon, 20 Aug 2007 13:43:00 +0000</pubDate>
		<dc:creator>Diogo</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.zerone.weblusa.org/life/objectos-magicos-2/</guid>
		<description><![CDATA[Hoje vou apresentar uma função que a maior parte da comunidade PHP não conhece. Está englobada dentro das &#8220;funções mágicas&#8221;, foi íncluida no PHP5, mas é necessário defini-la. Em projectos com uma escala média, em que contamos com mais do que alguns ficheiros é praticamente certo que vamos utilizar classes, e inclui-las com ficheiros externos. [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://knokio.com/php/objectos-magicos/' addthis:title='Objectos Mágicos '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.zerone.weblusa.org/wp-content/uploads/2007/08/autload.jpg" alt="autload.jpg" /></p>
<p>Hoje vou apresentar uma função que a maior parte da comunidade PHP não conhece. Está englobada dentro das &#8220;funções mágicas&#8221;, foi íncluida no PHP5, mas é necessário defini-la.</p>
<p>Em projectos com uma escala média, em que contamos com mais do que alguns ficheiros é praticamente certo que vamos utilizar <em>classes</em>, e inclui-las com ficheiros externos.</p>
<pre>
</pre>
<p>Este é um exemplo típico duma aplicação simples/complexa. Incluímos o nosso ficheiro em todos as páginas em que vamos necessitar duma ligação à base-de-dados e em cada uma delas vamos iniciar o nosso objecto.</p>
<p>Agora podemos continuar a seguir a linha de pensamento, e para um projecto funcionar vai precisar também duma <em>classe</em> para gerir os utilizadores, outra, quem sabe, para gerir os templates &#8211; e para os mais exigentes, também podemos incluir uma para cache.</p>
<p>Vamos utilizar muito provavelmente uma página, normalmente denominada por <i>kernel</i> ou <i>global</i>, que vai incluir tudo isto por nós em todas as páginas, ou na única página, do nosso projecto.</p>
<p>Mas tudo fica mais simples se fizermos uso desta função. Imaginemos o seguinte pedaço de código, que representa <strong>literalmente</strong> como ficaria o nosso <i>index</i>:</p>
<pre>
</pre>
<p><span id="more-42"></span><br />Acho que já se tornou evidente as capacidades desta função. Quando criamos um novo objecto, se o interpretador não encontrar a class definida chama a função <em>__autoload</em> e passa como argumento o nome da class. Tudo o resto fica a cargo da nossa imaginação.</p>
<p>Esta função já é usado em frameworks do topo como <a href="http://codeigniter.com/">codeignitor</a>, <a href="http://cakephp.org/">cakephp</a> e a recente, e aclamada, <a href="http://framework.zend.com/">Zend Framework</a>. Além disso está <a href="http://www.phpdeveloper.org/news/7705">parcialmente provado</a> que fica aproximadamente ~3.7x mais eficiente usar <em>__autoload</em> em vez de usar directamente o <em>require_once</em>.</p>
<p>Fica aqui um último exemplo de como eu uso esta função em algumas aplicações, tornando o meu código mais legível e incorporando um log de erros. Quando chamo uma class, cada <em>_</em> (underscore) representa um nível mais baixo em pastas, permitindo assim organizar facilmente módulos e classes.</p>
<pre>
</pre>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://knokio.com/php/objectos-magicos/' addthis:title='Objectos Mágicos '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://knokio.com/php/objectos-magicos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guia para Iniciados</title>
		<link>http://knokio.com/php/guia-para-iniciados/</link>
		<comments>http://knokio.com/php/guia-para-iniciados/#comments</comments>
		<pubDate>Tue, 14 Aug 2007 19:33:00 +0000</pubDate>
		<dc:creator>Diogo</dc:creator>
				<category><![CDATA[Guide]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.zerone.weblusa.org/life/guia-para-iniciados-2/</guid>
		<description><![CDATA[This area is intended for everyone new to PHP. It opens with a series of informal, entertaining tutorials written by Vikram Vaswani, founder and CEO of Melonfire. These tutorials build on a previously-published 5-part series which has now been updated and extended to embrace PHP 5, making parts of it suitable for those of you [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://knokio.com/php/guia-para-iniciados/' addthis:title='Guia para Iniciados '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<blockquote><p>This area is intended for everyone new to PHP. It opens with a series of informal, entertaining tutorials written by Vikram Vaswani, founder and CEO of Melonfire. These tutorials build on a previously-published 5-part series which has now been updated and extended to embrace PHP 5, making parts of it suitable for those of you who already have worked with PHP 4 in the past.</p>
<p>If you came here to learn about elementary PHP 4 or basic PHP 5, this is for you. Enjoy!</p></blockquote>
<p><strong><a href="http://devzone.zend.com/node/view/id/627">PHP 101: PHP For the Absolute Beginner</a></strong></p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://knokio.com/php/guia-para-iniciados/' addthis:title='Guia para Iniciados '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://knokio.com/php/guia-para-iniciados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Console</title>
		<link>http://knokio.com/php/php-console/</link>
		<comments>http://knokio.com/php/php-console/#comments</comments>
		<pubDate>Mon, 13 Aug 2007 16:26:00 +0000</pubDate>
		<dc:creator>Diogo</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.zerone.weblusa.org/life/php-console-2/</guid>
		<description><![CDATA[O CLI Versão da PHP O Básico Mais avançado Ler dados Alguma vez pensou se seria possível executar ficheiros de php na linha de comandos, como se fossem programas de C ou de Pascal? Além de parecer divertido, provavelmente já precisou mesmo de usar e não sabia como. Imagine um ficheiro em PHP que executaria [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://knokio.com/php/php-console/' addthis:title='PHP Console '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.zerone.weblusa.org/wp-content/uploads/2007/08/php-console.png" alt="Header-PHP-Console" /></p>
<div class="toc">
<ol>
<li><a href="http://knokio.com/php/php-console/#toc-o-cli">O CLI</a></li>
<li><a href="http://knokio.com/php/php-console/#toc-verso-da-php">Versão da PHP</a></li>
<li><a href="http://knokio.com/php/php-console/#toc-o-bsico">O Básico</a></li>
<li><a href="http://knokio.com/php/php-console/#toc-mais-avanado">Mais avançado</a></li>
<li><a href="http://knokio.com/php/php-console/#toc-ler-dados">Ler dados</a></li>
</ol>
</div>
<p>Alguma vez pensou se seria possível executar ficheiros de php na linha de comandos, como se fossem programas de C ou de Pascal?</p>
<p>Além de parecer divertido, provavelmente já precisou mesmo de usar e não sabia como. Imagine um ficheiro em PHP que executaria quando iniciasse o servidor (ou o seu servidor instalado em casa) e que trataria de apagar mensagens de fórum antigas ou actualizasse as estatísticas de um gestor de ficheiros.</p>
<p>Podíamos criar um <a href="http://pt.wikipedia.org/wiki/Crontab">Crontab</a> se estivéssemos a usar <a href="http://www.cpanel.net">Cpanel</a> ou Unix, mas por vezes precisamos de ir mais além. Em PHP existe mais uma opção chamada actualmente de <strong>CLI</strong> (Command Line Interface) a qual vamos explorar neste artigo.</p>
<p><span id="more-39"></span></p>
<h2 id="toc-o-cli">O CLI</h2>
<p>Desde a versão 4.3.0 do PHP que o CLI se tornou um um SAPI (Server API) oficial e conta agora com um .exe próprio para executar aplicações destinadas á linha de comandos.</p>
<p>É bom ter a noção de que o PHP não é a única escolha para criar aplicações que executem em linha-de-comandos, mas traz obviamente vantagens. Se estivermos a programar um portal poderíamos usar outra linguagem como PERL ou Python; o problema aparece quando não conhecemos bem a linguagem ou, mesmo que lidemos bem com ela, seria necessário um esforço extra para executar no mesmo servidor duas linguagens diferentes e lidarmos com a possibilidade de ter de corrigir problemas de duas linguagens diferentes. Simplesmente na grande maioria dos casos é preferível a simplicidade à performance que as outras linguagens dão.</p>
<p>Que tipo de problemas podem ser resolvidos utilizando PHP na consola? Podemos resolver problemas administrativos em que não necessitamos de criar grandes ambientes visuais, mas precisamos de mandar executar backups, limpeza de listas de comentários. Também podemos pensar em fazer um programa de instalação de linha de comandos; por vezes não temos pastas com acessos de escrita e então temos aqui uma boa solução.</p>
<h2 id="toc-verso-da-php">Versão da PHP</h2>
<p>Podemos correr qualquer versão do PHP na consola, mas é aconselhável que se use a partir da versão 4.3.0, pois implementa o novo sistema <strong>CLI</strong>. { <a href="http://pt.php.net/manual/pt_BR/features.commandline.php">Ver documentação PHP</a> }</p>
<p>Antes de executarmos o comando é importante relembrar que não necessitam de ter a palavra <em>php</em> definida como um atalho no Windows; podem executar directamente através da pasta. Para os utilizadores de Linux este problema não se coloca.</p>
<pre name="code" class="php">C:\wamp\php&gt;php -v
PHP 5.2.3 (cli) (built: May 31 2007 09:37:22)
Copyright (c) 1997-2007 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies</pre>
<p>ou</p>
<pre name="code" class="php">$ php -v
PHP 4.3.6 (cli) (built: Apr 19 2004 10:02:14)
Copyright (c) 1997-2004 The PHP Group
Zend Engine v1.3.0, Copyright (c) 1998-2004 Zend Technologies</pre>
<p>É aconselhável que obtenham a confirmação que têm o <em>cli</em>, mas se obtiverem um <em>cgi</em> não se preocupem pois pode ser contornado. Mais à frente veremos como.</p>
<h2 id="toc-o-bsico">O Básico</h2>
<p>Para começar, é importante perceber que <strong>qualquer</strong> script em php vai funcionar correctamente na linha de comandos. Mas também é imediato a percepcção que o output não vai ser tão bonito como visto num browser.. ; )</p>
<p>É portanto preciso adaptarmo-nos quando estamos a programar um script a ser executado para a linha de comandos. Aqui fica um exemplo muito simples:</p>
<p>Para executar este programa, vamos novamente à consola:</p>
<pre name="code" class="php">C:\wamp\php&gt;php hello.php
Ola Consola! :D</pre>
<p>ou</p>
<pre name="code" class="php">C:\wamp\php&gt;php C:\caminho_para_ficheiro\hello.php
Ola Consola! :D</pre>
<h2 id="toc-mais-avanado">Mais avançado</h2>
<p>É importante perceber mais conceitos. Quando se escreve programas para consola, devemos incluir um <em>exit(0);</em> no final do programa respeitar as regra de &#8220;boas maneiras&#8221;. Além disso os parágrafos funcionam de forma bem mais simples sendo apenas necessário um <em>\n</em> no final da linha, ao contrário de um <em>&lt;br&gt;</em> ou <em>&lt;p&gt;</em>.</p>
<pre name="code" class="php">&lt;?php
for ( $i = 0; $i</pre>
<p><strong>Output</strong></p>
<pre name="code" class="php">C:\wamp\php&gt;php loop.php
0
1
2
3
4
5
6
7
8
9</pre>
<p>Quando estivermos a programar para consola, vamos utilizar duas novas funções: <em>fgets</em> e <em>fwrite</em>. Qualquer pessoa familiarizada com outras linguagens já conhece estas funções. Elas recebem como argumento um <a href="http://pt.wikipedia.org/wiki/Stream">stream de dados</a>.</p>
<p>Existem três stream&#8217;s que vêem por defeito no PHP, associadas a estes endereços:</p>
<ul>
<li>php://stdin (leitura) &#8211; <strong>STDIN</strong></li>
<li>php://stdout (escrita) &#8211; <strong>STDOUT</strong></li>
<li>php://stderr (escrita) &#8211; <strong>STDERR</strong></li>
</ul>
<p>Conseguiríamos um programa exactamente igual com esta alternativa:</p>
<pre name="code" class="php">&lt;?php
for ( $i = 0; $i</pre>
<h2 id="toc-ler-dados">Ler dados</h2>
<p>Obviamente em algum ponto vai ser necessário o utilizador faz algumas escolhas dentro da execução do programa.</p>
<p>Podemos pensar que estamos a lidar com um ficheiro, que torna tudo mais fácil de imaginar. A única diferença é que usamos os stream&#8217;s de input e output do PHP. A constante que sobra, STDERR, serve para guardar erros de execução numa stream independente; estudaremos mais em pormenor noutro artigo.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://knokio.com/php/php-console/' addthis:title='PHP Console '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://knokio.com/php/php-console/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello Blog!</title>
		<link>http://knokio.com/php/php-code-example-xd/</link>
		<comments>http://knokio.com/php/php-code-example-xd/#comments</comments>
		<pubDate>Sun, 12 Aug 2007 22:50:59 +0000</pubDate>
		<dc:creator>Diogo</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://blog.zerone.weblusa.org/default/php-code-example-xd/</guid>
		<description><![CDATA[Like any language, when we start the first thing we do is to test the ultimate algorithm: The Hello Blog! function foo() { return "Hello Blog!n"; } for ($i = 0; $i &#60; 10 $i++) { echo foo(); }<div class="addthis_toolbox addthis_default_style " addthis:url='http://knokio.com/php/php-code-example-xd/' addthis:title='Hello Blog! '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p>Like any language, when we start the first thing we do is to test the ultimate algorithm: The Hello Blog!</p>
<pre line="1" lang="php">function foo() {
    return "Hello Blog!n";
}

for ($i = 0; $i &lt; 10 $i++) {
    echo foo();
}</pre>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://knokio.com/php/php-code-example-xd/' addthis:title='Hello Blog! '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://knokio.com/php/php-code-example-xd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

