<?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>SamuraiDio &#187; php</title>
	<atom:link href="http://blog.diovani.com/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.diovani.com</link>
	<description>GNU/Linux &#124; PHP &#124; JavaScript</description>
	<lastBuildDate>Fri, 28 May 2010 00:11:07 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Quanto mais simples melhor</title>
		<link>http://blog.diovani.com/2009/01/20/quanto-mais-simples-melhor/</link>
		<comments>http://blog.diovani.com/2009/01/20/quanto-mais-simples-melhor/#comments</comments>
		<pubDate>Wed, 21 Jan 2009 00:08:24 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/2009/01/20/quanto-mais-simples-melhor/</guid>
		<description><![CDATA[ Fazendo manutenção em um script hoje no trabalho (código legado), me deparei com um código mais ou menos assim:

$condicao = !&#40;$var == 0&#41;;

Devo ter levado cerca de uns 5 minutos para entender o que a maldita expressão retornava. Pelo menos ela rendeu algumas risadas minhas e de meus colegas.
Acontece que, em programação, quanto mais [...]]]></description>
			<content:encoded><![CDATA[<p> Fazendo manutenção em um script hoje no trabalho (código legado), me deparei com um código mais ou menos assim:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$condicao</span> <span style="color: #339933;">=</span> <span style="color: #339933;">!</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$var</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Devo ter levado cerca de uns 5 minutos para entender o que a maldita expressão retornava. Pelo menos ela rendeu algumas risadas minhas e de meus colegas.</p>
<p>Acontece que, em programação, quanto mais simples e fácil de entender se deixar uma expressão melhor. Mesmo que você seja o único a ter acesso ao fontes posteriormente.</p>
<p>Não quero criticar o autor do código que eu estava mantendo (até porque não sei quem é), mas apenas estou usando o (mau) código acima para exemplificar o tema do tópico.</p>
<p>Falando de boas práticas de programação, não se nega uma comparação deste jeito. O correto seria usar o operador NOT EQUAL (diferente):</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$condicao</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$var</span> <span style="color: #339933;">!=</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>E se considerarmos as facilidades de conversão de tipos do PHP, podemos simplificar ainda mais, bastanto usar um <a href="http://www.php.net/manual/pt_BR/language.types.type-juggling.php#language.types.typecasting">cast</a>:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$condicao</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>bool<span style="color: #009900;">&#41;</span> <span style="color: #000088;">$var</span><span style="color: #339933;">;</span></pre></div></div>

<p>Explicando&#8230;<br />
A expressão acima (primeiro exemplo) compara se a variável é igual a 0 (zero) e depois nega o resultado, assim se a variável for igual a zero, a comparação retornará true (verdadeiro), que se tornará false (falso) devido a negação (!), o que dá o mesmo resultado que comparar se a variável é diferente de 0 (zero)(segundo exemplo). Como em PHP 0 (zero) é validado com false (falso) e qualquer outro valor como true (verdadeiro), o resultado é o mesmo que simplesmente converter a variável para booleano (terceiro exemplo).</p>
<p>Resumindo, sempre mantenha as linhas de código o mais claras e simples o possível.<br />
Seguem algumas dicas:</p>
<ul>
<li>Evite expressões difíceis de entender, como a do exemplo deste post. Verifique há um modo mais simples de obter o mesmo resultado com código mais claro e/ou menor, se não encontrar, adicione comentário para tornar a expressão mais clara;</li>
<li>use nomes de variáveis que exemplifiquem sua finalidade. Prefira usar <em>$cor</em>, ao invés de <em>$c</em> ou <em>$x</em>;</li>
<li>sempre indente corretamente seu código, deixando os bloco <em>{}</em> bem visíveis. Use linhas em branco entre blocos de comandos diferentes. Prefira usar <em>espaços</em> ao invés de <em>tabs</em> para indentação, assim o código fica com o mesmo visual em qualquer editor;</li>
<li>evite blocos vazios, como um <em>if</em> ou <em>loop</em> sem corpo, é comum encontrarmos blocos como:

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$valor</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000088;">$var</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'constante'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

</li>
<li>utilize <em>phpdoc</em>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #009933; font-style: italic;">/**
 * Descrição da classe, método ou função
 *
 *@param tipo [variável [descrição]]
 *@return tipo [descrição]
 */</span></pre></div></div>

<p>para definir classes, interfaces, métodos, propriedades e funções. Este é o método de documentação padrão do PHP e auxilia no uso de IDEs especializadas (Eclipse PDT, Zend Studio, etc.);</li>
<li>comente <strong>TODA</strong> linha de código sempre que possível.</li>
</ul>
<p>Com estas boas práticas, seus códigos deverão ter uma vida útil muito mais longa (sim, código fonte tem validade, e a clareza e documentação destes serve de embalagem).</p>
<p>Só pra concluir, vou colocar uma tabelinha de comparações básicas em PHP aqui, do tipo que a gente sempre fica em dúvida quando usa um <em>if($var) </em>:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//array vazio, string vazia, 0 com ou sem aspas e null</span>
<span style="color: #666666; font-style: italic;">//são todos avaliados como FALSE (falso)</span>
<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">&quot;&quot;</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">''</span> <span style="color: #339933;">==</span> <span style="color: #0000ff;">'0'</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">null</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//se usados operadores de comparação explícita,</span>
<span style="color: #666666; font-style: italic;">//que também comparam os tipos (=== e !==)</span>
<span style="color: #666666; font-style: italic;">//APENAS valores IDÊNTICOS são avaliados</span>
<span style="color: #666666; font-style: italic;">//como TRUE (verdadeiro)</span>
<span style="color: #cc66cc;">0</span> <span style="color: #339933;">===</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #0000ff;">'abc'</span> <span style="color: #339933;">===</span> <span style="color: #0000ff;">'abc'</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">//todos diferentes se comparados também em seus tipos</span>
<span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!==</span> <span style="color: #0000ff;">&quot;&quot;</span> <span style="color: #339933;">!==</span> <span style="color: #0000ff;">''</span> <span style="color: #339933;">!==</span> <span style="color: #0000ff;">'0'</span> <span style="color: #339933;">!==</span> <span style="color: #cc66cc;">0</span> <span style="color: #339933;">!==</span> <span style="color: #009900; font-weight: bold;">null</span> <span style="color: #339933;">!==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2009/01/20/quanto-mais-simples-melhor/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Zend Studio para Eclipse</title>
		<link>http://blog.diovani.com/2008/10/03/zend-studio-para-eclipse/</link>
		<comments>http://blog.diovani.com/2008/10/03/zend-studio-para-eclipse/#comments</comments>
		<pubDate>Fri, 03 Oct 2008 19:41:24 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/2008/10/03/zend-studio-para-eclipse/</guid>
		<description><![CDATA[É isso mesmo, você não leu errado. A nova versão do Zend Studio, provavelmente a melhor IDE para PHP existente no mercado, é agora um plugin para o Eclipse.
Enquanto a Zend se prontifica a continuar dando suporte aos usuários do Zend 5.5, a versão 6 foi totalmente reescrita como um Plugin para o Eclipse, adicionando [...]]]></description>
			<content:encoded><![CDATA[<p>É isso mesmo, você não leu errado. A nova versão do <a href="http://www.zend.com/en/products/studio/">Zend Studio</a>, provavelmente a melhor IDE para PHP existente no mercado, é agora um plugin para o <a href="http://eclipse.org">Eclipse</a>.</p>
<p>Enquanto a <a href="http://www.zend.com/en/">Zend</a> se prontifica a continuar dando suporte aos usuários do <a href="http://www.zend.com/en/products/studio/studio55">Zend 5.5</a>, a versão 6 foi totalmente reescrita como um Plugin para o Eclipse, adicionando uma série de plugins existentes para desenvolvimento web e propondo-se a criar uma ferramenta IDE completa.</p>
<p><a href="http://blog.diovani.com/wp-content/uploads/2008/10/2008-10-03_15-29-57.jpg" title="Zend Studio for Eclipse Splash Screen"><img src="http://blog.diovani.com/wp-content/uploads/2008/10/2008-10-03_15-29-57.thumbnail.jpg" alt="Zend Studio for Eclipse Splash Screen" align="right" /></a>Na página do Zend Studio, está disponível um <a href="http://www.zend.com/en/products/studio/compare">comparativo de suas características com as do Eclipse PDT</a>, onde destacam-se algumas características como um editor WYSIWYG para PHP/HTML, possibilidade de ver elmentos JavaScript dentro dos editores PHP e HTML, suporte ao <a href="http://www.phpdoc.org/">PHPDocumentor</a> e integração com <a href="http://framework.zend.com/">Zend Framework</a> e outros produtos da Zend.</p>
<p>Aproveitando-se das capacidades multiplataforma do Eclipse, o Zend Studio agora está disponível para MS Windows®, Mac OS X® e GNU/Linux. Tenho a dizer que a versão Linux está ótima (novamente, graças ao Eclipse) utilizando o Tollkit GTK2, o que é uma grande melhora ao antigo Zend Studio que era apenas passável para Linux. Infelizmente (e sabe-se lá porque) está disponível apenas para arquitetura x86, o que significa que usuários de Plataforma 64 bits devem continuar com Eclipse + <a href="http://www.eclipse.org/pdt/">PDT</a>.</p>
<p>Sobre os Plugins&#8230; Dei uma rápida olhada nos plugins já instalado no Zend Studio for Eclipse e me deparei com vários nomes conhecidos, como o <a href="http://www.eclipse.org/webtools/">WTP (<em>web tools plataform</em>)</a>, <a href="http://www.eclipse.org/datatools/">DTP (<em>data tools plataform</em>)</a>, <a href="http://www.eclipse.org/gef/">GEF (<em>graphical editing framework</em>)</a>, <a href="http://www.eclipse.org/subversive/">Subversive</a> e até mesmo o <a href="http://www.eclipse.org/pdt/">PDT (<em>PHP development tools</em>)</a>. Isso significa que além de seus próprios plugins, a Zend está incluindo no &#8220;pacote&#8221; uma série de plugins Livres já conhecidos, e isso não é, de forma alguma, um ponto negativo, uma vez que eles estão dando valor e utilizando plugins estáveis e muito já usados por desenvolvedores PHP.</p>
<p><a href="http://blog.diovani.com/wp-content/uploads/2008/10/2008-10-03_15-31-13.jpg" title="Zend Studio for Eclipse “about” Dialog"></a></p>
<p style="text-align: center"><a href="http://blog.diovani.com/wp-content/uploads/2008/10/2008-10-03_15-31-13.jpg" title="Zend Studio for Eclipse “about” Dialog"><img src="http://blog.diovani.com/wp-content/uploads/2008/10/2008-10-03_15-31-13.thumbnail.jpg" alt="Zend Studio for Eclipse “about” Dialog" /></a></p>
<p>Como ponto negativo, a inclusão de uma série de plugins e, inclusive, conectores para diversas bases de dados, torna o instalador um pacote de mais de 320MB, e também o deixa um pouco mais lento que o Eclipse normalmente seria.</p>
<p>Obviamente, o Zend Studio continua sendo Pago (o que não é exatamente um ponto negativo, visto que paga-se pelo suporte e atualizações constantes). Uma <a href="http://www.zend.com/en/products/studio/downloads">versão de avaliação</a> pode ser baixada, ficando disponível por 30 dias.</p>
<p>Resumindo, o Zend Studio for Eclipse torna-se uma ótima opção para desenvolvedores PHP que estejam dispostos a pagar certa quantia pelo software e pelo suporte da Zend, e também para aqueles que utilizam com frequência o Zend Framework e produtos como Zend Debugger e Zend Guard, beneficiando-se da integração da IDE com estes produtos. Quanto aos demais, seria melhor continuar com Eclipse + PDT, ou procurar uma das <a href="http://www.eclipse.org/downloads/">distribuições do Eclipse</a> que ofereça o que deseja, pelo simples fato de não serem necessários todos os recursos que o Zend Studio for Eclipse oferece.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2008/10/03/zend-studio-para-eclipse/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lançado CakePHP 1.2 RC3</title>
		<link>http://blog.diovani.com/2008/10/02/lancado-cakephp-12-rc3/</link>
		<comments>http://blog.diovani.com/2008/10/02/lancado-cakephp-12-rc3/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 18:08:14 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[cakePHP]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/2008/10/02/lancado-cakephp-12-rc3/</guid>
		<description><![CDATA[Foi lançada hoje a última versão, antes da versão final do CakePHP 1.2, contendo a correção de bugs existentes e, principalmente, uma grande melhora na performance.
Para quem não conhece, o CakePHP é um Framework PHP que utiliza padrões de desenvolvimento como MVC (Model View Controller) e Active Record, inspirado no conhecido Framework para Ruby Ruby [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.diovani.com/wp-content/uploads/2008/10/cake-logo.png" title="cake-logo.png"><img src="http://blog.diovani.com/wp-content/uploads/2008/10/cake-logo.thumbnail.png" alt="cake-logo.png" align="right" /></a>Foi lançada hoje a última versão, antes da versão final do CakePHP 1.2, contendo a correção de bugs existentes e, principalmente, uma grande melhora na performance.</p>
<p>Para quem não conhece, o <a href="http://cakephp.org">CakePHP</a> é um Framework PHP que utiliza padrões de desenvolvimento como <a href="http://pt.wikipedia.org/wiki/MVC">MVC</a> (Model View Controller) e <a href="http://en.wikipedia.org/wiki/Active_record_pattern">Active Record</a>, inspirado no conhecido Framework para Ruby <a href="http://pt.wikipedia.org/wiki/Ruby_on_Rails">Ruby on Rails</a>. O principal diferencial do CakePHP para outros Frameworks está na facilidade de desenvolver aplicações rapidamente com ele, e sua capacidade de trabalhar com relacinamentos entre tabelas.</p>
<p>Nesta nova <em>Release Candidate</em>, Larry (o principal desenvolvedor) se concentrou em iterações e melhorias de performance, resultando em uma versão até 10x mais rápida que a RC2.</p>
<p>Não deixe de atualizar para a <a href="http://cakeforge.org/frs/?group_id=23&amp;release_id=426">RC3</a> o quanto antes.</p>
<p><em>Fonte: <a href="http://bakery.cakephp.org/articles/view/release-cakephp-rc3-the-rc-of-triumph">http://bakery.cakephp.org/articles/view/release-cakephp-rc3-the-rc-of-triumph</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2008/10/02/lancado-cakephp-12-rc3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Singleton Pattern no PHP 4</title>
		<link>http://blog.diovani.com/2008/09/11/singleton-pattern-no-php-4/</link>
		<comments>http://blog.diovani.com/2008/09/11/singleton-pattern-no-php-4/#comments</comments>
		<pubDate>Thu, 11 Sep 2008 03:39:36 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/2008/09/11/singleton-pattern-no-php-4/</guid>
		<description><![CDATA[Já sabemos como funciona o singleton pattern no PHP 5, mas devido as capacidades limitadas de POO do PHP4, não é possível se utilizar do mesmo padrão de desenvolvimento neste, mas há um pequeno truque que podemos fazer para obter o mesmo resultado.
No PHP4 não é possível termos propriedades estáticas em classes, mas ainda é [...]]]></description>
			<content:encoded><![CDATA[<p>Já sabemos como funciona o <a href="http://br.php.net/manual/pt_BR/language.oop5.patterns.php"><em>singleton pattern</em> no PHP 5</a>, mas devido as capacidades limitadas de <a href="http://pt.wikipedia.org/wiki/Poo"><em>POO</em></a> do PHP4, não é possível se utilizar do mesmo padrão de desenvolvimento neste, mas há um pequeno truque que podemos fazer para obter o mesmo resultado.</p>
<p>No PHP4 não é possível termos propriedades estáticas em classes, mas ainda é possível ter variáveis estáticas dentro de funções. Assim podemos criar uma função capaz de fazer o papel do <em>singleton</em> ao instanciar uma classe em um objeto estático. Veja o Exemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">function</span> <span style="color: #339933;">&amp;</span>singleton<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    static <span style="color: #000088;">$obj</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$obj</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #666666; font-style: italic;">//instancia a classe, caso o objeto já não exista</span>
        <span style="color: #000088;">$obj</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> stdclass<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$obj</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>No exemplo, eu usei a classe padrão <em>stdclass</em> do PHP, mas o mesmo funciona com qualquer classe definida pelo usuário. Você pode, inclusive, utilizar um array no lugar da variável <em>$obj</em> para usar a mesma função singleton para instanciar ou recuperar várias classes.</p>
<p>Note o operador de referência <em><strong>&#8216;&amp;&#8217;</strong></em> antes do nome da função. Ele é necessário para garantir que a função sempre retorne uma referência para o objeto estático, ao invés de criar um novo objeto, e também é necessário ao se atribuir o retorno da função a uma variável . Veja um exemplo de uso da função:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$foo</span> <span style="color: #339933;">=&amp;</span> singleton<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//cria um objeto</span>
<span style="color: #990000;">var_dump</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$foo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$foo</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">property</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'SamuraiDio'</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//atribui um valor a uma propriedade</span>
<span style="color: #990000;">var_dump</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$foo</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$bar</span> <span style="color: #339933;">=&amp;</span> singleton<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//recupera o objeto existe (não irá criar um novo)</span>
<span style="color: #990000;">var_dump</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$bar</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>A saída do código acima, será como a seguir:</p>
<pre>object(stdClass)(0) {
}
object(stdClass)(1) {
  ["property"]=>
  string(10) "SamuraiDio"
}
object(stdClass)(1) {
  ["property"]=>
  string(10) "SamuraiDio"
}</pre>
<p>Note que a terceira chamadas a <em>var_dump()</em> ainda exibe o valor da propriedade, apesar de ser de outra variável. Isso ocorre porque nossa função <em>singleton()</em> não instancia a classe novamente, mas sim apenas retorna uma referência para o objeto já existente. Assim temos um <em>Singleton Pattern</em> functional também para PHP4.</p>
<blockquote><p>NOTA: Mesmo com a possibilidade de usar <em>Singleton</em> no PHP4 utiizando-se desta técnica, é altamente recomendável atualizar suas instalações para PHP5, beneficiando-se com a maior capacidade e segurança da versão.</p></blockquote>
<p><em>Fontes: <a href="http://www.weberdev.com/get_example-4014.html">http://www.weberdev.com/get_example-4014.html</a></em>, <a href="http://br.php.net/manual/pt_BR/language.variables.scope.php#language.variables.scope.static">http://br.php.net/manual/pt_BR/language.variables.scope.php#language.variables.scope.static</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2008/09/11/singleton-pattern-no-php-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>LightTPD + PHP5 no Debian (Part 1: mod_fastcgi)</title>
		<link>http://blog.diovani.com/2008/09/07/lighttpd-php5-no-debian-part-1-mod_fastcgi/</link>
		<comments>http://blog.diovani.com/2008/09/07/lighttpd-php5-no-debian-part-1-mod_fastcgi/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 02:17:08 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[cgi]]></category>
		<category><![CDATA[lighttpd]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/2008/09/07/lighttpd-php5-no-debian-part-1-mod_fastcgi/</guid>
		<description><![CDATA[Já há algum tempo tenho curiosidade de testar outros servidores http como alternativa ao nosso conhecido Apache, e um que sempre me chamou atenção é o LightTPD, com a promessa de ser mais rápido e ter um consumo bem menor de memória e recursos do sistema.
Este fim de semana resolvi finalmente me aventurar e tentar [...]]]></description>
			<content:encoded><![CDATA[<p>Já há algum tempo tenho curiosidade de testar outros <a href="http://pt.wikipedia.org/wiki/Anexo:Lista_de_servidores_web">servidores http</a> como alternativa ao nosso conhecido Apache, e um que sempre me chamou atenção é o <a href="http://www.lighttpd.net/">LightTPD</a>, com a promessa de ser mais rápido e ter um consumo bem menor de memória e recursos do sistema.</p>
<p>Este fim de semana resolvi finalmente me aventurar e tentar migrar do <a href="http://httpd.apache.org/">Apache</a> para o <a href="http://www.lighttpd.net/">LightTPD</a>. Apesar de ser uma servidor web bem mais simples que o Apache, as diferenças na configuração deste podem ser uma dor de cabeça para quem está acostumado com as do Apache, principalmente em se tratando do mod_rewrite e Virtual Hosts, por isso vou separar a post em quatro partes:</p>
<ol>
<li>Instalação básica do LightTPD com mod_fastcgi e utilização com PHP5;</li>
<li>Configuração básica de Virtual Hosts, mod_userdir, e mod_evhost, possibilitando configuraçãode virtual hosts por usuários, por exemplo;</li>
<li>Utilização do mod_rewrite em comparação com o Apache, e configuração deste para &#8220;urls limpas&#8221; com CakePHP Framework (aplicável também para outros Frameworks e CMSs);</li>
<li>Benchmark. Testes de performance do LightTPD em comparação com o Apache.</li>
</ol>
<p>Começando com a Parte 1, abordada neste post.</p>
<p>Primeiramente instale o lighttpd, e php5-cgi, juntamente com os módulos PHP que desejar (php5-gd, php5-mysql, etc). Diferente do Apache, o Lighttpd não possui um módulo próprio para executar scripts php, assim, estes serão tratados a partir do módulo fastcgi que, na prática, é mais rápido que o apache mod_php, e não interfere em seu modo de uso.</p>
<pre># aptitude install lighttpd php5-cgi</pre>
<blockquote><p>Se o servidor Apache, ou outro servidor web, estiver sendo executado na porta 80, a instalação gerará um erro e ficará incompleta, pois o apt tentará iniciar o LightTPD na porta 80, que já estará sendo utilizada.</p>
<p>A solução para isto é parar momentaneamente o Apache (<em>/etc/init.d/apache2 stop</em>) , instalar o LightTPD, e alterar a sua porta, para só então reinciar o Apache (<em>/etc/init.d/apache2 start</em>).</p>
<p>Para alterar a porta utilizada pelo LightTPD, basta editar o arquivo <em>/etc/lighttpd/lighttpd.conf</em> e descomentar e alterar a porta, mais ou menos na linha 70: <em>server.port = 81</em>.</p>
<p>Se você não parou o servidor Apache e recebeu um erro na instalação, basta alterar a porta do lightTPD como mostrado acima, e reiniciar a instalação (basta rodar o <em>aptitude install</em> novamente) .</p></blockquote>
<p><a href="http://blog.diovani.com/wp-content/uploads/2008/09/2008-09-07_225638.png" title="LightTPD Placeholder page"><img src="http://blog.diovani.com/wp-content/uploads/2008/09/2008-09-07_225638.thumbnail.png" alt="LightTPD Placeholder page" align="right" /></a>Após concluída a instalação, você deverá ver a página teste do LightTPD acessando <em>http://127.0.0.1/</em><strong> </strong>(ou <em>http://localhost/</em>)  no seu navegador, agora só falta ativar o suporte para PHP5.</p>
<p>Assim como para o Apache, a instalação padrão do LightTPD no Debian coloca as configurações do servidor web em arquivos separados. O arquivo de configuração principal do LightTPD, como já vimos, fica em <strong><em>/etc/lighttpd/lighttpd.conf</em></strong>. Configurações adicionais ficam em <strong><em>/etc/lighttpd/conf-available</em></strong>, e devem sercriados links simbólicos para estes em <em>/etc/lighttpd/conf-enabled</em> para que estes sejam carregados. Assim, vamos habilitar o módulo fastcgi:</p>
<pre># cd /etc/lighttpd/conf-enabled
# ln -s ../conf-available/10-fastcgi.conf .
#</pre>
<p>Depois disto edite o arquivo <strong><em>/etc/php5/cgi/php.ini</em></strong> procure e altere a diretiva <strong><em>cgi.fix_pathinfo</em></strong> (linha 533, mais ou menos) de <strong><em>0</em></strong> para <strong><em>1</em></strong>. Esta é uma configuração auxiliar paradar suporte as variávels <em>PATH_INFO</em> e <em>PATH_TRANSLATED</em>, que originalmente não estão disponíveis para o PHP em modo CGI (alteração necessária para alguns Frameworks, como o CakePHP, funcionarem).</p>
<p>Após isto basta reiniciar o LightTPD (<strong><em>/etc/init.d/lighttpd restart</em></strong>) e começar a rodar seus scripts PHP normalmente, aproveitando  o ganho de performance e a economia de memória.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2008/09/07/lighttpd-php5-no-debian-part-1-mod_fastcgi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Configurando Eclipse PDT + XDebug</title>
		<link>http://blog.diovani.com/2008/08/10/configurando-eclipse-pdt-xdebug/</link>
		<comments>http://blog.diovani.com/2008/08/10/configurando-eclipse-pdt-xdebug/#comments</comments>
		<pubDate>Sun, 10 Aug 2008 18:20:20 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/2008/08/10/configurando-eclipse-pdt-xdebug/</guid>
		<description><![CDATA[O XDebug é um alternativa livre e bem completa para depurar aplicações em PHP. Com ele é possível verificar em tempo de execução o valor de todas as variáveis durante erros, assim como em breakpoints pré-definidos.
Estarei demonstrando neste post como configurar o XDebug para ser utilizado em conjunto com o Eclipse PDT (former PHPIDE) no [...]]]></description>
			<content:encoded><![CDATA[<p>O <a href="http://xdebug.org/">XDebug</a> é um alternativa livre e bem completa para <a href="http://pt.wikipedia.org/wiki/Depura%C3%A7%C3%A3o">depurar</a> aplicações em PHP. Com ele é possível verificar em tempo de execução o valor de todas as variáveis durante erros, assim como em <a href="http://en.wikipedia.org/wiki/Breakpoint">breakpoints</a> pré-definidos.</p>
<p>Estarei demonstrando neste post como configurar o XDebug para ser utilizado em conjunto com o <a href="http://www.eclipse.org/pdt/">Eclipse PDT (former PHPIDE)</a> no Debian testing (outras distribuições, e até mesmo Windows e Mac OS X  tem a mesma configuração, diferenciando-se apenas na instalação do XDebug e caminho do arquivo de configuração deste). O que deve salvar horas de depuração de seus aplicativos e extingir o uso das funções print_r() ou var_dump().</p>
<p>As versões mais recentes do Eclipse PDT já vem com suporte ao XDebug, como alternativa ao Zend Debugger, então, caso você já tenho o Eclipse PDT instalado em sua máquina, deve precisar, no máximo, atualizar a instalação com o update-manager. Para os demais, basta baixar da <a href="http://download.eclipse.org/tools/pdt/downloads/">página de downloads do Eclipse PDT</a>.</p>
<p>Mesmo para quem utilize Debian ou Ubuntu, recomendo baixar e instalar o Eclipse PDT manualmente pelo site, ao invés de utilizarem o gerenciador de pacotes (<em>aka. aptitude ou apt-get</em>), é apenas necessário ter o pacote <em>sun-java5-bin</em> instalado.</p>
<p>Para instalar o XDebug verifique os pacotes disponíveis para sua distribuição, ou faça o <a href="http://xdebug.org/">download dos binários</a> (para Windows e Mac) do site. Para usuários do Debian ou Ubuntu basta instalar via apt:</p>
<pre># aptitude install php5-xdebug</pre>
<p>Após concluída e instalação, edite o arquivo <em>xdebug.ini</em> (no Debian ele deve estar em <em>/etc/php5/conf.d/xdebug.ini</em>), mantenha a linha com a opção <em>&#8216;zend_extension=&#8217;</em> e adicione as linhas abaixo<em> </em>e reinicie seu servidor web (apache, lighttpd, etc.)<em>:</em></p>
<pre>xdebug.remote_enable=1
xdebug.remote_host="localhost"
xdebug.remote_port=9000
xdebug.remote_handler="dbgp"</pre>
<p>Para saber detalhes sobre estar opções, ou outras disponíveis, veja a <a href="http://xdebug.org/docs/">documentação do XDebug</a>.</p>
<p>Já no Eclipse, vá em <em>Window -&gt; Preferences -&gt; PHP -&gt; Debug -&gt; Installed Debuggers</em> e verifique se o XDebug está configurado na porta correta (<em>9000</em>, como colocamos no <em>xdebug.ini</em>):</p>
<p><a href="http://blog.diovani.com/wp-content/uploads/2008/08/2008-08-10_144020.png" title="2008-08-10_144020.png"></a></p>
<p style="text-align: center"><a href="http://blog.diovani.com/wp-content/uploads/2008/08/2008-08-10_144020.png" title="2008-08-10_144020.png"><img src="http://blog.diovani.com/wp-content/uploads/2008/08/2008-08-10_144020.thumbnail.png" alt="2008-08-10_144020.png" /></a></p>
<p>Depois vá em  <em>Window -&gt; Preferences -&gt; PHP -&gt; PHP Executables </em>(mesma Janela) e edite/adicione o caminho correto para seu executável PHP, selecionando <em>XDebug</em> como <em>PHP debugger</em>:</p>
<p><a href="http://blog.diovani.com/wp-content/uploads/2008/08/2008-08-10_144336.png" title="2008-08-10_144336.png"></a></p>
<p style="text-align: center"><a href="http://blog.diovani.com/wp-content/uploads/2008/08/2008-08-10_144336.png" title="2008-08-10_144336.png"><img src="http://blog.diovani.com/wp-content/uploads/2008/08/2008-08-10_144336.thumbnail.png" alt="2008-08-10_144336.png" /></a></p>
<p>Então vá em  <em>Window -&gt; Preferences -&gt; PHP -&gt; Debug</em> (mesma janela)<em> </em>e selecione o <em>XDebug</em> como seu <em>PHP debugger</em> padrão e seus executável PHP. Também desmarque a opção <em>Break at first line</em>, pois esta poderá ser adicionada mais tarde.</p>
<p><a href="http://blog.diovani.com/wp-content/uploads/2008/08/2008-08-10_144004.png" title="2008-08-10_144004.png"></a></p>
<p style="text-align: center"><a href="http://blog.diovani.com/wp-content/uploads/2008/08/2008-08-10_144004.png" title="2008-08-10_144004.png"><img src="http://blog.diovani.com/wp-content/uploads/2008/08/2008-08-10_144004.thumbnail.png" alt="2008-08-10_144004.png" /></a></p>
<p>Após definir as configurações gerais, feche a janela e vá em <em>Run -&gt; Open Debug Dialog </em>e<em> </em>de dois cliques em <em>PHP Web Page</em>. Nesta janela basta configurar o <em>XDebug</em> como <em>Server Debugger</em> o servidor web (Apache, Lighttpd, etc.) onde será acessada a aplicação, em <em>PHP Server, </em>o arquivo que iniciará aplicação (geralmente algum <em>index.php</em>, obrigatoriamente dentro de um projeto previamente configurado), em <em>file</em>, e a url para este arquivo, é qual pode ser configurada automaticamente, ou definida manualmente. Note também a opção <em>Break at First Line</em> que pode ser definida para a aplicação ser debugada logo na primeira linha:</p>
<p><a href="http://blog.diovani.com/wp-content/uploads/2008/08/2008-08-10_144124.png" title="2008-08-10_144124.png"></a></p>
<p style="text-align: center"><a href="http://blog.diovani.com/wp-content/uploads/2008/08/2008-08-10_144124.png" title="2008-08-10_144124.png"><img src="http://blog.diovani.com/wp-content/uploads/2008/08/2008-08-10_144124.thumbnail.png" alt="2008-08-10_144124.png" /></a></p>
<p>Também deve ser necessário definir o navegador onde as páginas serão exibidar em <em>Window -&gt; Preferences -&gt; General -&gt; Web Browser. </em>Selecione <em>User external Web browser </em>e escolha o navegador de sua preferência (Iceweasel ou Firefox, no meu caso).</p>
<p><a href="http://blog.diovani.com/wp-content/uploads/2008/08/2008-08-10_143907.png" title="Perspectiva PHP Debug, exibindo variáveis atuais, com XDebug"><img src="http://blog.diovani.com/wp-content/uploads/2008/08/2008-08-10_143907.thumbnail.png" alt="Perspectiva PHP Debug, exibindo variáveis atuais, com XDebug" align="right" /></a>Após concluída a configuração, basta clicar no botão <em>Debug</em> da barra de ferramentas e a sessão será iniciada. Sempre que houver algum erro na aplicação, ou esta atingir um breakpoint definido por você, a perspectiva deverá mudar para a <em>PHP Debug</em>, pausando a aplicação, e exibindo todas as variáveis (inclusive parametros enviados por GET ou POST e variáveis de sessão) definidas atualmente.</p>
<p><em>Fonte: <a href="http://www.starbowconsulting.com/blog/tao/setting-eclipse-pdt-and-xdebug">http://www.starbowconsulting.com/blog/tao/setting-eclipse-pdt-and-xdebug</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2008/08/10/configurando-eclipse-pdt-xdebug/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Lançado último release do PHP 4</title>
		<link>http://blog.diovani.com/2008/08/08/lancado-ultimo-release-do-php-4/</link>
		<comments>http://blog.diovani.com/2008/08/08/lancado-ultimo-release-do-php-4/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 20:14:35 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[notícias]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/2008/08/08/lancado-ultimo-release-do-php-4/</guid>
		<description><![CDATA[Como falado anteriormente, hoje é o dia da última atualização de segurança para o PHP 4.4.
Como anunciado no php.net, foi lançada ontem a última atualização de segurança para o PHP 4.4, release 4.4.9, e será esta a última. Segundo a notícia no PHP.net, é extremamente recomendado para os usuários do PHP 4 atualizarem para esta [...]]]></description>
			<content:encoded><![CDATA[<p>Como <a href="http://blog.diovani.com/2007/07/14/o-fim-do-php-4/">falado anteriormente</a>, hoje é o dia da última atualização de segurança para o PHP 4.4.</p>
<p>Como <a href="http://www.php.net/archive/2008.php#id2008-08-07-1">anunciado no php.net</a>, foi lançada ontem a última atualização de segurança para o PHP 4.4, release 4.4.9, e será esta a última. Segundo a notícia no PHP.net, é extremamente recomendado para os usuários do PHP 4 atualizarem para esta versão.</p>
<p>Cá entre nós, vale muito mais atualizar logo para o PHP 5.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2008/08/08/lancado-ultimo-release-do-php-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Eclipse</title>
		<link>http://blog.diovani.com/2007/10/03/php-eclipse/</link>
		<comments>http://blog.diovani.com/2007/10/03/php-eclipse/#comments</comments>
		<pubDate>Wed, 03 Oct 2007 23:00:01 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/2007/10/03/php-eclipse/</guid>
		<description><![CDATA[Após um bom tempo sem postar venho com uma recomendação.
Não faz muito tempo, em meu post sobre Delphi e Visual Studio como IDEs para PHP falei no Eclipse, agora venho fazer um resumo e recomendação sobre esta IDE.
O Eclipse é uma IDE produzida inicialmente para Java, mas que possui plugins para diversas outras linguagens, assim [...]]]></description>
			<content:encoded><![CDATA[<p>Após um bom tempo sem postar venho com uma recomendação.</p>
<p>Não faz muito tempo, em meu post sobre Delphi e Visual Studio como IDEs para PHP falei no Eclipse, agora venho fazer um resumo e recomendação sobre esta IDE.</p>
<p>O Eclipse é uma IDE produzida inicialmente para Java, mas que possui plugins para diversas outras linguagens, assim podendo ser usado para desenvolvimento em C/C++, Ruby, Python, e claro, PHP. Acontece que o Eclipse é, ao meu ver, a segunda melhor IDE para programação com PHP, perdendo apenas para o Zend Studio, porém, livre, mais leve, e até mesmo com mais recursos, isso porque você pode adicionar mais ferramentas para editar arquivos HTML, JS, SQL, e até fluxogramas e ferramentas gráficas.</p>
<p>Ademais ele conta com um excelente controle de projetos, ajuda de contexto (inclusive para classes definidas pelo usuário)  e suporte a controle de versão com CVS ou SVN.</p>
<p><a href="http://blog.diovani.com/wp-content/uploads/2007/10/eclipse-context-help.png" title="eclipse-context-help.png"><img src="http://blog.diovani.com/wp-content/uploads/2007/10/eclipse-context-help.thumbnail.png" alt="eclipse-context-help.png" /></a> <a href="http://blog.diovani.com/wp-content/uploads/2007/10/eclipse-cvs.png" title="botões para sincronização com um repositório CVS"><img src="http://blog.diovani.com/wp-content/uploads/2007/10/eclipse-cvs.thumbnail.png" alt="botões para sincronização com um repositório CVS" /></a></p>
<p>O Eclipse pode ser adquirido pelo <a href="http://eclipse.org">website oficial</a> ou em distribuições customizadas para diversas linguagens. Eu recomendo o EasyEclipse para PHP, que pode ser aquirido <a href="http://easyeclipse.org">aqui</a>. Lembrando que mesmo as distribuições podem ser customizadas para adicionar mais e mais recursos. Ele também pode ser instalado via ap-get no Debian ou Ubuntu, mas as distribuições customizadas parecem bem mais completas e funcionais.</p>
<p>Recomendado!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2007/10/03/php-eclipse/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Delphi e MS Visual Studio como IDEs para PHP</title>
		<link>http://blog.diovani.com/2007/09/02/delphi-e-ms-visual-studio-como-ides-para-php/</link>
		<comments>http://blog.diovani.com/2007/09/02/delphi-e-ms-visual-studio-como-ides-para-php/#comments</comments>
		<pubDate>Sun, 02 Sep 2007 17:02:33 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[delphi]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[visual studio]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/2007/09/02/delphi-e-ms-visual-studio-como-ides-para-php/</guid>
		<description><![CDATA[Uma ótima novidade para usuários Windows&#8230;
A JCX Software lançou recentemente uma extensão para usar o MS Visual Studio como uma IDE para PHP, trata-se do VS.Php.
Sempre achei, apesar de minha aversão a Microsoft, o Visual Studio uma ótima ferramenta de desenvolvimento, sendo muito fácil de usar e debugar programas, agora, com esta adição, PHP torna-se [...]]]></description>
			<content:encoded><![CDATA[<p>Uma ótima novidade para usuários Windows&#8230;</p>
<p>A JCX Software lançou recentemente uma extensão para usar o MS Visual Studio como uma IDE para PHP, trata-se do <a href="http://www.jcxsoftware.com/vs.php">VS.Php</a>.</p>
<p>Sempre achei, apesar de minha aversão a Microsoft, o Visual Studio uma ótima ferramenta de desenvolvimento, sendo muito fácil de usar e debugar programas, agora, com esta adição, PHP torna-se uma alternativa a ASP.NET para os desenvolvedores familiarizados com o Visual Studio.</p>
<p>Outra ótima novidade é o recente <a href="http://www.codegear.com/br/products/delphi/php">Delphi para PHP</a>. Trata-se de um ambiente visual <a href="http://pt.wikipedia.org/wiki/RAD">RAD</a> para desenvolvimento Web com PHP, otimizado para PHP 5. Para exemplificar, imagine contruir formulários web, menus, e requisições do mesmo modo que criamos formulários em Delphi ou VB.net (ou usando Glade para interfaces GTK).</p>
<p>Reconheço que fiquei especialmente curioso e entusiasmado com o lançamento do Delphi para PHP, é uma pena que não tenho como testar a ferramenta pessoalmente (quem tiver a experiência comenta aqui, plz). Minha dúvida é se Delphi para PHP pode ser usado para criar aplicações Desktop com a API do Windows&#8230;</p>
<p>Para mais informações e Download/Aquisição visite as páginas abaixo:</p>
<p><em><a href="http://www.jcxsoftware.com/vs.php">VS.php</a><br />
<a href="http://www.jcxsoftware.com/vs.php">Delphi for PHP</a><br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2007/09/02/delphi-e-ms-visual-studio-como-ides-para-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Go PHP 5</title>
		<link>http://blog.diovani.com/2007/08/09/go-php-5/</link>
		<comments>http://blog.diovani.com/2007/08/09/go-php-5/#comments</comments>
		<pubDate>Thu, 09 Aug 2007 21:58:38 +0000</pubDate>
		<dc:creator>diovani</dc:creator>
				<category><![CDATA[Sem Categoria]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.diovani.com/2007/08/09/go-php-5/</guid>
		<description><![CDATA[

Apesar de todas as melhorias do PHP 5 sobre o PHP 4, a maioria dos servidores de Hospedagem que vemos por aí ainda suporta apenas PHP 4, e temem uma migração pela incompatibilidade que os sistemas de seus clientes podem encontrar.
Nós desenvolvedores PHP queremos nos beneficiar  das vantagens do PHP 5, sem nos preocupar [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://gophp5.org" title="Support GoPHP5.org"><img src="http://gophp5.org/sites/gophp5.org/buttons/goPHP5-200x65.png" alt="Support GoPHP5.org" border="0" height="65" width="200" /><br />
</a><br />
Apesar de todas as melhorias do PHP 5 sobre o PHP 4, a maioria dos servidores de Hospedagem que vemos por aí ainda suporta apenas PHP 4, e temem uma migração pela incompatibilidade que os sistemas de seus clientes podem encontrar.</p>
<p>Nós desenvolvedores PHP queremos nos beneficiar  das vantagens do PHP 5, sem nos preocupar em fazer sistemas compatíveis com a versão 4.</p>
<p>Para alavancar as migrações para PHP 5, de sistemas e servidores, foi inicado o projeto <a href="http://gophp5.org/">Go PHP 5</a>, divulgando Projetos e Servidores de hopedagem que suportem PHP 5.2 ou posterior e discussões relevantes.</p>
<p>Visite a <a href="http://gophp5.org/">página do projeto</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.diovani.com/2007/08/09/go-php-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
