<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>PHPit</title>
	
	<link>http://www.phpit.com.br</link>
	<description>PHP levado a sério</description>
	<lastBuildDate>Mon, 20 Feb 2012 04:41:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/phpit" /><feedburner:info uri="phpit" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>O que há de novo no PHP 5.4? Conheça as mudanças mais significativas.</title>
		<link>http://feedproxy.google.com/~r/phpit/~3/VviihKbBZQo/o-que-ha-de-novo-no-php-5-4-conheca-as-mudancas-mais-significativas.phpit</link>
		<comments>http://www.phpit.com.br/artigos/o-que-ha-de-novo-no-php-5-4-conheca-as-mudancas-mais-significativas.phpit#comments</comments>
		<pubDate>Fri, 09 Dec 2011 13:10:16 +0000</pubDate>
		<dc:creator>Rafael Jaques</dc:creator>
				<category><![CDATA[Curiosidades]]></category>
		<category><![CDATA[Ferramentas]]></category>
		<category><![CDATA[PHP 6]]></category>
		<category><![CDATA[novidades]]></category>
		<category><![CDATA[php 5.4]]></category>
		<category><![CDATA[php 6]]></category>

		<guid isPermaLink="false">http://www.phpit.com.br/?p=361</guid>
		<description><![CDATA[Como você deve saber, o PHP 5.4 está às portas e ele é praticamente o PHP 6. Dia 11 de dezembro foi lançado o RC1 do PHP 5.4 e fui dar uma conferida no que há de novo. Lhe digo: é surpreendente! Se &#8230; <a href="http://www.phpit.com.br/artigos/o-que-ha-de-novo-no-php-5-4-conheca-as-mudancas-mais-significativas.phpit">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>
<p>Como você deve saber, o PHP 5.4 está às portas e ele é <em>praticamente</em> o PHP 6. Dia 11 de dezembro foi <a href="http://www.php.net/archive/2011.php#id2011-11-11-1" target="_blank">lançado o RC1 do PHP 5.4</a> e fui dar uma conferida no que há de novo. Lhe digo: é surpreendente!</p>
<p>Se quiser dar uma olhada na lista completa de novas features, <a href="http://www.php.net/releases/NEWS_5_4_0_RC1.txt" target="_blank">dê uma olhada na news</a>.</p>
<p>Caso ainda não saiba do que se trata o PHP 6 e qual a diferença para o PHP 5.4, dê uma olhada nesse artigo que escrevi há alguns dias: <a title="Tornando-se compatível com o PHP 6" href="http://www.phpit.com.br/artigos/tornando-se-compativel-com-o-php-6.phpit" target="_blank">Tornando-se compatível com o PHP 6</a>.</p>
<p>Agora apresento-lhes as características que, na minha opinião, são as mais bacanas dessa nova versão!</p>
<h2>Servidor HTTP incorporado</h2>
<p>Assim como em outras linguagens, o PHP agora também possuirá um servidor HTTP embutido. A maneira mais simples de colocá-lo para funcionar é a seguinte:</p>
<pre class="brush: bash; title: ; notranslate">php -S localhost:8080</pre>
<p>Isso fará com que o servidor rode na máquina local, escutando na porta 8080. Isso é muito importante para quem quer testar rapidamente um arquivo ou um sistema sem ter que configurar toda a estrutura de um servidor. Eu também uso isso (por enquanto, no Python) para compartilhar arquivos pela rede! :)</p>
<h2>Sintaxe de array encurtada</h2>
<p>Pra mim, uma das alterações mais importantes de todas! Agora não é mais necessário utilizar a função <strong>array()</strong> para criar vetores.</p>
<pre class="brush: php; title: ; notranslate">$frutas = ['Banana', 'Abacaxi', 'Laranja']
$dados = ['nome' =&gt; 'Rafael', 'profissao' =&gt; 'Professor']</pre>
<h2>Acesso de propriedades e métodos na instanciação da classe</h2>
<p>É possível utilizar <em>fluent interfaces</em>, como no Java:</p>
<pre class="brush: php; title: ; notranslate">$meuCarro = (new Carro)-&gt;setVelocidade(100)-&gt;setCor('azul');</pre>
<h2>Typehint callable</h2>
<p>Esse typehint permite que você passe como um parâmetro uma função, uma função anônima (closure) ou uma array composta por um nome de classe (ou objeto) e um nome de método.</p>
<pre class="brush: php; title: ; notranslate">function funcao(callable $func_param) {
    $func_param();
}

// No caso o $func_param() seria a mesma coisa que
// (new Carro)-&gt;ligar();

funcao([new Carro(), 'ligar']);</pre>
<h2>Suporte a valores numéricos binários</h2>
<p>Iniciando seus números com <strong>0b</strong> é possível definir números binários diretamente no PHP.</p>
<pre class="brush: php; title: ; notranslate">$binario = 0b001110;</pre>
<h2>Suporte à sintaxe Class::{expr}()</h2>
<p>Isso fazia MUITA falta! Agora o PHP está mais flexível na hora de invocar métodos. Todas as linhas a seguir são válidas:</p>
<pre class="brush: php; title: ; notranslate">$metodo = 'nome_de_metodo';

$teste = new Teste();

$teste-&gt;nome_de_metodo();
$teste-&gt;$metodo();
$teste-&gt;{'nome_de_metodo'}();

Teste::nome_de_metodo();
Teste::$metodo();
Teste::{'nome_de_metodo'}();</pre>
<h2>Suporte a Traits</h2>
<p>As traits são também conhecidas como <strong>heranças horizontais</strong>.</p>
<p><em>O PHP não suporta herança múltipla, e por esse motivo, às vezes ficamos limitados em algumas decisões de projeto (design). O maior problema neste ponto é que toda herença até agora (PHP 5.3.x) é vertical, ou seja, se eu precisar de um nível de abstração diferente no meio do processo, ou precisarei adicionar a nova abstração e reescrever tudo abaixo dela, ou ainda, terei que duplicar o código pois não conseguirei satisfazer a herença.</em></p>
<p><em>É nesse ponto que os Traits aparecem. Diferentemente da herença (vertical), os Traits possibilitam-nos criar heranças horizontais.</em></p>
<p><em> </em>Esse trecho de texto foi retirado do <a href="http://programe.me/traits-em-php-heranca-horizontal/" target="_blank">blog do Hélio Costa</a>. Lá você pode saber mais sobre as Traits. Pode também olhar no <a href="http://www.php.net/manual/pt_BR/language.oop5.traits.php" target="_blank">manual do PHP</a> (em inglês).</p>
<pre class="brush: php; title: ; notranslate">class Base {
    public function digaOla() {
        echo 'Olá ';
    }
}

trait DigaMundo {
    public function digaOla() {
        parent::digaOla();
        echo 'mundo!';
    }
}

class MeuOlaMundo extends Base {
    use DigaMundo;
}

$o = new MeuOlaMundo();
$o-&gt;digaOla(); // Olá mundo!</pre>
<h2>Suporte a dereferenciamento de arrays</h2>
<p>É possível acessar diretamente uma array do retorno de uma função.</p>
<pre class="brush: php; title: ; notranslate">function frutas() {
    return array('a' =&gt; 'amora', 'b' =&gt; 'banana', 'c' =&gt; 'caqui');
}

echo frutas()['c']; // caqui</pre>
<h2>Desempenho do silenciador (@) melhorado</h2>
<p>Nunca recomendei o uso disso mas, de qualquer, melhoraram o desempenho deste operador, que em muitas aplicações é altamente utilizado.</p>
<pre class="brush: php; title: ; notranslate">$arquivo = @file_get_contents('/etc/passwd');</pre>
<h2>Progresso do Upload</h2>
<p><a href="http://schlueters.de/blog/archives/151-Upload-Progress-in-PHP-trunk.html" target="_blank">De acordo com um dos desenvolvedores do PHP</a>, teremos um medidor de progresso de upload embutido no PHP 5.4 (na versão 5.3 era um patch).</p>
<p>Agora é possível definir uma variável de sessão que é atualizada com o progresso de determinado upload (aleluia). Segue um exemplo:</p>
<pre class="brush: xml; title: ; notranslate">&lt;form action=&quot;upload.php&quot; method=&quot;POST&quot; enctype=&quot;multipart/form-data&quot;&gt;
	&lt;input type=&quot;hidden&quot; name=&quot;&lt;?php echo ini_get('session.upload_progress.name'); ?&gt;&quot; value=&quot;meu_upload&quot; /&gt;
	&lt;input type=&quot;file&quot; name=&quot;arquivo1&quot; /&gt;
	&lt;input type=&quot;file&quot; name=&quot;arquivo2&quot; /&gt;
	&lt;input type=&quot;submit&quot; /&gt;
&lt;/form&gt;</pre>
<p>Confesso que espero por isso há tempos!</p>
<h2>E outras coisinhas mais&#8230;</h2>
<p>Existem algumas outras alterações que não são tão impactantes, mas que talvez você goste de saber:</p>
<ul>
<li>Agora existe a possibilidade de desabilitar o processamento de dados do POST a fim de economizar memória e ciclos de CPU. Caso utilize isso, os dados originais ainda (raw data) ainda podem ser lidos pelo stream php://input;</li>
<li>Criaram uma interface chamada JsonSerializable, para que o objeto possa ser aceito em um json_encode() (embora o json_decode() não consiga recriar o objeto);</li>
</ul>
<h2>O que NÃO estará no PHP 5.4</h2>
<p>Nem todas as <em>features</em> que foram sugeridas acabaram entrando no core do PHP 5.4.</p>
<ul>
<li>Typehint Scalar para parâmetros nos métodos</li>
<li>Suporte Unicode/UTF-8 na linguagem para operações de strings :(</li>
<li>Tipos primitivos (integer, string, boolean, etc&#8230;) como palavras reservadas (foi removido por questão de retrocompatibilidade)</li>
<li>Suporte a foreach com list()</li>
</ul>
<h2>Conclusões</h2>
<p>Espero que tenha servido para desmistificar as mudanças que vêm aí nas versões 5.4 e 6.0! :)</p>
<p>E você? O que mais gostou no PHP 5.4? Alguma coisa que não falei aqui? Algo que eu falei pouco? <strong>Comenta aí e deixa a tua opinião!</strong></p>
<p>Um abraço a todos e fiquem com Deus!<br />
Rafael Jaques</p>
<p><strong>Fontes consultas:</strong></p>
<ul>
<li><a href="http://www.php.net/releases/NEWS_5_4_0_RC1.txt" target="_blank">http://www.php.net/releases/NEWS_5_4_0_RC1.txt</a></li>
<li><a href="http://gonzalo123.wordpress.com/2011/11/28/playing-with-the-new-php5-4-features/" target="_blank">http://gonzalo123.wordpress.com/2011/11/28/playing-with-the-new-php5-4-features/</a></li>
<li><a href="http://css.dzone.com/polls/what-new-feature-php-54" target="_blank">http://css.dzone.com/polls/what-new-feature-php-54</a></li>
<li><a href="http://php.webtutor.pl/en/2011/09/27/whats-new-in-php-5-4-a-huge-list-of-major-changes/" target="_blank">http://php.webtutor.pl/en/2011/09/27/whats-new-in-php-5-4-a-huge-list-of-major-changes/</a></li>
<li><a href="http://schlueters.de/blog/archives/151-Upload-Progress-in-PHP-trunk.html" target="_blank">http://schlueters.de/blog/archives/151-Upload-Progress-in-PHP-trunk.html</a></li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.phpit.com.br/artigos/o-que-ha-de-novo-no-php-5-4-conheca-as-mudancas-mais-significativas.phpit/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://www.phpit.com.br/artigos/o-que-ha-de-novo-no-php-5-4-conheca-as-mudancas-mais-significativas.phpit?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=o-que-ha-de-novo-no-php-5-4-conheca-as-mudancas-mais-significativas</feedburner:origLink></item>
		<item>
		<title>Memtrack – Diagnóstico de Aplicações PHP</title>
		<link>http://feedproxy.google.com/~r/phpit/~3/F7D1_h7E7Mg/memtrack-diagnostico-de-aplicacoes-php.phpit</link>
		<comments>http://www.phpit.com.br/artigos/memtrack-diagnostico-de-aplicacoes-php.phpit#comments</comments>
		<pubDate>Sun, 20 Nov 2011 12:55:40 +0000</pubDate>
		<dc:creator>Rafael Jaques</dc:creator>
				<category><![CDATA[Comandos avançados]]></category>
		<category><![CDATA[Dicas]]></category>

		<guid isPermaLink="false">http://www.phpit.com.br/?p=351</guid>
		<description><![CDATA[Adaptado de: http://www.leftjoin.net/2011/11/php-application-diagnostics-memtrack/ Sobre o Memtrack Perfilamento de aplicações ajudam a determinar os gargalos e possíveis problemas durante o desenvolvimento. Mas às vezes é preciso diagnosticar problemas no ambiente de produção. Frequentemente enfrentamos problemas com funções e métodos utilizando muita memória. Se quisermos rastrear funções que estão consumindo muita &#8230; <a href="http://www.phpit.com.br/artigos/memtrack-diagnostico-de-aplicacoes-php.phpit">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>
<p><em>Adaptado de: <a href="http://www.leftjoin.net/2011/11/php-application-diagnostics-memtrack/" target="_blank">http://www.leftjoin.net/2011/11/php-application-diagnostics-memtrack/</a></em></p>
<h2>Sobre o Memtrack</h2>
<p>Perfilamento de aplicações ajudam a determinar os gargalos e possíveis problemas durante o desenvolvimento. Mas às vezes é preciso diagnosticar problemas no ambiente de produção. Frequentemente enfrentamos problemas com funções e métodos utilizando muita memória.</p>
<p>Se quisermos rastrear funções que estão consumindo muita memória, podemos utilizar uma extensão do PHP chamada <a href="http://php.net/manual/en/book.memtrack.php" target="_blank">Memtrack</a>. Com ela podemos definir níveis aceitáveis de limite de memória e, quando alguma função ultrapassá-lo, um aviso será enviado.</p>
<h2>Instalação e configuração</h2>
<p>A Memtrack é uma extensão PECL, portanto para instalá-la é bastante simples:</p>
<pre class="brush: bash; title: ; notranslate">pecl install memtrack</pre>
<p>Para configurar também é bem tranquilo:</p>
<pre class="brush: plain; title: ; notranslate">extension=memtrack.so
memtrack.enabled = 1 ; habilita a extensão
memtrack.soft_limit = int ; utilize um número para o limite de memória</pre>
<p>Mais exemplos de configuração podem ser encontrados no <a href="http://www.php.net/manual/pt_BR/memtrack.ini.php" target="_blank">manual do PHP</a>.</p>
<p>Segue um exemplo de configuração:</p>
<pre class="brush: plain; title: ; notranslate">extension=memtrack.so
memtrack.enabled = 1 ; habilita a extensão
memtrack.soft_limit = 1M ; define 1mb como limite de memória </pre>
<h2>Erro gerado</h2>
<p>Vamos utilizar a seguinte função para &#8220;detonar&#8221; a memória:</p>
<pre class="brush: php; title: ; notranslate">function muitoConsumoDeMemoria() {
    $algumaCoisa = array();
    for ($i = 0; $i &lt; 10000; $i++) {
    	$algumaCoisa[] = sha1('a');
    }
    return $algumaCoisa;
}

$algo = muitoConsumoDeMemoria();</pre>
<p>Quando essa função for executada, irá gerar um aviso no Memtrack.</p>
<pre class="brush: plain; title: ; notranslate">[memtrack] [pid 10408] user function muitoConsumoDeMemoria() executed in PATH on line 10 allocated 1572864 bytes</pre>
<p>Nesse log é possível encontrar informações sobre o processo, a função (nome e informações), caminho do arquivo, linha e uso de memória.</p>
<h2>Conclusão</h2>
<p>Com o perfilamento de aplicações é possível identificar onde a aplicação torna-se mais crítica.</p>
<p>Espero que seja bem útil e que, a partir de agora, suas aplicações sejam otimizadas!</p>
<p>Um forte abraço a todos e fiquem com Deus!</p>
</div>
<p><em><br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpit.com.br/artigos/memtrack-diagnostico-de-aplicacoes-php.phpit/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.phpit.com.br/artigos/memtrack-diagnostico-de-aplicacoes-php.phpit?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=memtrack-diagnostico-de-aplicacoes-php</feedburner:origLink></item>
		<item>
		<title>Gerando números de identificação (ID) únicos com PHP</title>
		<link>http://feedproxy.google.com/~r/phpit/~3/X9SperhYfMs/gerando-numeros-de-identificacao-id-unicos-com-php.phpit</link>
		<comments>http://www.phpit.com.br/artigos/gerando-numeros-de-identificacao-id-unicos-com-php.phpit#comments</comments>
		<pubDate>Wed, 21 Sep 2011 18:22:03 +0000</pubDate>
		<dc:creator>Rafael Jaques</dc:creator>
				<category><![CDATA[Básico]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[dica]]></category>
		<category><![CDATA[gerador]]></category>
		<category><![CDATA[id]]></category>
		<category><![CDATA[unique]]></category>

		<guid isPermaLink="false">http://www.phpit.com.br/?p=337</guid>
		<description><![CDATA[Fala, meu povo! Tudo sossegado? Essa semana estava trabalhando em um sistema que precisava gerar IDs únicos para acesso e fui dar uma pesquisada pra ver o que encontrava. E não é que, para a minha surpresa, o PHP possui &#8230; <a href="http://www.phpit.com.br/artigos/gerando-numeros-de-identificacao-id-unicos-com-php.phpit">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Fala, meu povo!</p>
<p>Tudo sossegado?</p>
<p>Essa semana estava trabalhando em um sistema que precisava gerar IDs únicos para acesso e fui dar uma pesquisada pra ver o que encontrava. E não é que, para a minha surpresa, o PHP possui um gerador de IDs únicos?</p>
<p>A função chama-se <strong>uniqid()</strong> e funciona da seguinte maneira:</p>
<pre class="brush: plain; title: ; notranslate">string uniqid ([ string $prefix = &quot;&quot; [, bool $more_entropy = false ]] )</pre>
<p>Cada ID é gerado de acordo com os microsegundos, ou seja, se você estiver gerando IDs únicos em hosts diferentes é interessante utilizar o parâmetro <strong>$prefix</strong> para estipular um prefixo para cada ID gerado e evitar que sejam gerados hashs iguais (no mesmo microsegundo).</p>
<h2>Modo simples</h2>
<p>Chamar a função sem nenhum parâmetro irá gerar um ID único de <strong>13</strong> caracteres.</p>
<p>Eu utilizei este código e obtive os seguintes resultados:</p>
<pre class="brush: php; title: ; notranslate">&lt;?php

	for ($i = 0; $i &lt; 20; $i++)
	{
		echo uniqid() , '&lt;br /&gt;';
	}</pre>
<pre class="brush: plain; title: ; notranslate">4e7a2a9eda4f4
4e7a2a9eda513
4e7a2a9eda520
4e7a2a9eda52c
4e7a2a9eda538
4e7a2a9eda53e
4e7a2a9eda545
4e7a2a9eda54a
4e7a2a9eda54f
4e7a2a9eda553
4e7a2a9eda558
4e7a2a9eda55d
4e7a2a9eda562
4e7a2a9eda567
4e7a2a9eda56c
4e7a2a9eda571
4e7a2a9eda576
4e7a2a9eda57b
4e7a2a9eda580
4e7a2a9eda585</pre>
<p>Nessa amostra é possível perceber que um padrão é seguido, porém a variação sempre está presente.</p>
<h2>Aumentando a entropia</h2>
<p>É possível aumentar a entropia e bagunçar ainda mais o número, diminuindo a previsibilidade do identificador gerado.</p>
<p>Alterando para <strong>true</strong> o segundo parâmetro da função, aumentaremos de <strong>13 </strong>para <strong>23</strong> o número de caracteres gerados.</p>
<pre class="brush: php; title: ; notranslate">&lt;?php

	for ($i = 0; $i &lt; 20; $i++)
	{
		echo uniqid(NULL, true) ,  '&lt;br /&gt;';
	}</pre>
<pre class="brush: plain; title: ; notranslate">4e7a289bd01f45.79477223
4e7a289bd02032.89581934
4e7a289bd02052.11471119
4e7a289bd02075.00423065
4e7a289bd02085.08264238
4e7a289bd020a0.54923203
4e7a289bd020b3.38239852
4e7a289bd020c5.41874042
4e7a289bd020e7.13109847
4e7a289bd020f8.07879585
4e7a289bd02105.23156388
4e7a289bd02121.78128696
4e7a289bd02133.03380035
4e7a289bd02142.46928362
4e7a289bd02158.14421079
4e7a289bd02168.85897068
4e7a289bd02186.39675466
4e7a289bd02192.69187621
4e7a289bd021a1.41820411
4e7a289bd021b4.97244295</pre>
<h2>Identificadores extremamente imprevisíveis</h2>
<p>Pra finalizar, uma paulada! Vamos preencher o primeiro parâmetro (prefixo) utilizando a função <strong>rand()</strong>. Então teremos um identificador de entropia elevadíssima, sendo um ID aleatório de 23 posições precedido por um número aleatório.</p>
<pre class="brush: php; title: ; notranslate">&lt;?php

	for ($i = 0; $i &lt; 20; $i++)
	{
		echo uniqid(rand(), true) , '&lt;br /&gt;';
	}</pre>
<pre class="brush: plain; title: ; notranslate">19060798504e7a29e9c9c059.93729338
13329376364e7a29e9c9c121.60865627
11839762204e7a29e9c9c151.33271890
15126155264e7a29e9c9c173.28119226
3205916434e7a29e9c9c196.14831352
6879387264e7a29e9c9c1a1.12625014
12097042174e7a29e9c9c1c4.76932924
5578020564e7a29e9c9c1e8.49604578
8800718324e7a29e9c9c1f7.42284494
3516524794e7a29e9c9c210.74379494
13719049204e7a29e9c9c232.53688755
13615040334e7a29e9c9c258.57255460
9026903494e7a29e9c9c262.94629146
12770888504e7a29e9c9c283.76903832
2071162574e7a29e9c9c2a1.35952502
7032290634e7a29e9c9c2b9.36462979
3520522964e7a29e9c9c2d3.39877178
4841746524e7a29e9c9c2e4.67328983
15352161784e7a29e9c9c301.78593394
16981154524e7a29e9c9c318.06476122</pre>
<p>Wow! :D</p>
<h2>Considerações finais</h2>
<p>O sistema mostrou-se extremamente eficiente para realizar a tarefa a que se propõe e eu fiquei bastante satisfeito com os resultados obtidos.</p>
<p>Espero que tenha sido uma dica útil e gostaria de lembra-los que o blog está sempre aberto a comentários, sendo de críticas, elogios ou sugestões!</p>
<p>Um abraço a todos!<br />
Fiquem com Deus.</p>
<p>Rafael Jaques</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpit.com.br/artigos/gerando-numeros-de-identificacao-id-unicos-com-php.phpit/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://www.phpit.com.br/artigos/gerando-numeros-de-identificacao-id-unicos-com-php.phpit?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=gerando-numeros-de-identificacao-id-unicos-com-php</feedburner:origLink></item>
		<item>
		<title>Como embutir código PHP em arquivos CSS</title>
		<link>http://feedproxy.google.com/~r/phpit/~3/ROhyTtsdudI/como-embutir-codigo-php-em-arquivos-css.phpit</link>
		<comments>http://www.phpit.com.br/artigos/como-embutir-codigo-php-em-arquivos-css.phpit#comments</comments>
		<pubDate>Wed, 13 Jul 2011 21:38:56 +0000</pubDate>
		<dc:creator>Rafael Jaques</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[embed]]></category>
		<category><![CDATA[gambiarra]]></category>

		<guid isPermaLink="false">http://www.phpit.com.br/?p=324</guid>
		<description><![CDATA[Prefácio Já sentiu vontade de colocar condicionais no CSS? Já precisou colocar um belo de um IF do seu PHP dentro de uma folha de estilos pra resolver um problemão? Pois então lhe mostro duas formas que podem resolver o &#8230; <a href="http://www.phpit.com.br/artigos/como-embutir-codigo-php-em-arquivos-css.phpit">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h2>Prefácio</h2>
<p>Já sentiu vontade de colocar condicionais no CSS? Já precisou colocar um belo de um IF do seu PHP dentro de uma folha de estilos pra resolver um problemão?</p>
<p>Pois então lhe mostro duas formas que podem resolver o seu problema! :D</p>
<h2>Método 1</h2>
<p>Este método é mais simples e utiliza um arquivo de extensão <strong>php</strong> apenas com um cabeçalho modificado. Basta adicionar um header dizendo ao navegador que o <strong>Content-type</strong> desse arquivo é <strong>text/css</strong>.</p>
<p>Vamos aproveitar pra passar um parâmetro (GET) para o arquivo! Caso exista e possua determinado valor, vamos trocar a cor do fundo da página!</p>
<p>Supondo que o nosso arquivo seja <strong>estilos.php</strong>, a estrutura ficaria mais ou menos assim:</p>
<pre class="brush: php; title: ; notranslate">&lt;?php header('Content-type:text/css'); ?&gt;

body {
   background-color: &lt;?php echo (isset($_GET['fundo']) &amp;&amp; $_GET['fundo'] == 'verde') ? '#0f0' /* Verde */ : '#00f' /* Azul */; ?&gt;
}</pre>
<p>E na hora de puxar o CSS para o seu HTML, vamos adicionar um parâmetro indicando que queremos o fundo verde. Caso apague ou altere o valor, o fundo ficará azul:</p>
<pre class="brush: xml; title: ; notranslate">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;screen&quot; href=&quot;estilos.php?fundo=verde&quot; /&gt;</pre>
<h2>Método 2</h2>
<p>Já este modo é um pouquinho mais trabalhoso, mas permite que você mantenha seus arquivos com extensão <strong>css</strong>. Detalhe que só funciona com o Apache. Se você utiliza outro servidor, terá que procurar uma alternativa.</p>
<p>Crie um arquivo <strong>.htaccess</strong> (ou utilize um já existente) no diretório do arquivo css. Para fazer a mágica, apenas utilize a seguinte linha de código:</p>
<pre class="brush: plain; title: ; notranslate">AddType application/x-httpd-php .css</pre>
<p>Isso fará com que o Apache interprete os arquivos <strong>.css</strong> daquele diretórios como arquivos PHP. Aí é só mandar ver! :-)</p>
<h2>Conclusão</h2>
<p>Espero que tenham gostado e que a dica tenha sido útil!</p>
<p>Um abraço a todos e fiquem com Deus.<br />
Rafael Jaques</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpit.com.br/artigos/como-embutir-codigo-php-em-arquivos-css.phpit/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.phpit.com.br/artigos/como-embutir-codigo-php-em-arquivos-css.phpit?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=como-embutir-codigo-php-em-arquivos-css</feedburner:origLink></item>
		<item>
		<title>PHP Sob Ataque – Técnicas de Programação Defensiva – Vídeo e Slides</title>
		<link>http://feedproxy.google.com/~r/phpit/~3/jwMeQb0V8f4/php-sob-ataque-tecnicas-de-programacao-defensiva-video-e-slides.phpit</link>
		<comments>http://www.phpit.com.br/artigos/php-sob-ataque-tecnicas-de-programacao-defensiva-video-e-slides.phpit#comments</comments>
		<pubDate>Mon, 04 Jul 2011 17:55:00 +0000</pubDate>
		<dc:creator>Rafael Jaques</dc:creator>
				<category><![CDATA[Palestras]]></category>
		<category><![CDATA[engenharia social]]></category>
		<category><![CDATA[fisl]]></category>
		<category><![CDATA[invasão]]></category>
		<category><![CDATA[palestra]]></category>
		<category><![CDATA[segurança]]></category>

		<guid isPermaLink="false">http://www.phpit.com.br/?p=311</guid>
		<description><![CDATA[Salve, galera! Primeiramente gostaria de agradecer a todos que estiveram na minha palestra e para os que assistiram pela internet. Se você não conseguiu entrar na sala ou então quiser rever os slides, cá estão! E assim que eu tiver &#8230; <a href="http://www.phpit.com.br/artigos/php-sob-ataque-tecnicas-de-programacao-defensiva-video-e-slides.phpit">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Salve, galera!</p>
<p>Primeiramente gostaria de agradecer a todos que estiveram na minha palestra e para os que assistiram pela internet.</p>
<p>Se você não conseguiu entrar na sala ou então quiser rever os slides, cá estão!</p>
<p>E assim que eu tiver o vídeo comigo, vou divulgar aqui também!</p>
<p><strong>Resumo da palestra: </strong>É comum encontrar desenvolvedores desatentos deixando brechas que, por mais simples que sejam, podem gerar situações desagradáveis. Na palestra do ano passado (PHP à Prova de Balas) o intuito era mostrar maneiras de ataque variadas e como se defender de cada uma delas. O foco desse ano não é prevenção de ataques contra a aplicação e sim contra o seu usuário, modalidade de ataque que vem crescendo. Esta palestra tenta reunir cuidados que devem ser tomados na hora de desenvolver uma aplicação web.</p>
<p>Seguem os slides:</p>
<iframe src="http://www.slideshare.net/slideshow/embed_code/8496363" width="620" height="504" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe><br/><br/>
<p>Vídeo da palestra:</p>
<iframe src='http://player.vimeo.com/video/26059958?title=0&amp;byline=0&amp;portrait=0' width='400' height='225' frameborder='0'></iframe>
<p>&nbsp;</p>
<p>Obrigado por todo o apoio, gente!</p>
<p>Nos vemos na próxima!</p>
<p>Deus abençoe todos vocês!<br />
Um forte abraço.<br />
Rafael Jaques</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpit.com.br/artigos/php-sob-ataque-tecnicas-de-programacao-defensiva-video-e-slides.phpit/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.phpit.com.br/artigos/php-sob-ataque-tecnicas-de-programacao-defensiva-video-e-slides.phpit?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=php-sob-ataque-tecnicas-de-programacao-defensiva-video-e-slides</feedburner:origLink></item>
		<item>
		<title>Palestra no FISL</title>
		<link>http://feedproxy.google.com/~r/phpit/~3/X14RYptPWZs/palestra-no-fisl.phpit</link>
		<comments>http://www.phpit.com.br/artigos/palestra-no-fisl.phpit#comments</comments>
		<pubDate>Mon, 27 Jun 2011 18:32:58 +0000</pubDate>
		<dc:creator>Rafael Jaques</dc:creator>
				<category><![CDATA[Palestras]]></category>
		<category><![CDATA[fisl]]></category>
		<category><![CDATA[palestra]]></category>
		<category><![CDATA[segurança]]></category>

		<guid isPermaLink="false">http://www.phpit.com.br/?p=305</guid>
		<description><![CDATA[Fala, galera! Tudo na santa paz? Estou aqui para convidá-los para a minha palestra que acontecerá no FISL 12, nessa sexta-feira! :D O título é PHP Sob Ataque &#8211; Técnicas de Programação Defensiva. Será no dia 1º às 12h00 na &#8230; <a href="http://www.phpit.com.br/artigos/palestra-no-fisl.phpit">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Fala, galera!</p>
<p>Tudo na santa paz?</p>
<p>Estou aqui para convidá-los para a minha palestra que acontecerá no FISL 12, nessa sexta-feira! :D</p>
<p>O título é <strong>PHP Sob Ataque &#8211; Técnicas de Programação Defensiva</strong>. Será no dia 1º às 12h00 na sala 41-C (Fisl 3).</p>
<p>Segue a grade completa do evento: <a href="http://fisl.org.br/12/papers_ng/public/fast_grid?event_id=1" target="_blank">http://fisl.org.br/12/papers_ng/public/fast_grid?event_id=1</a></p>
<p>Nos vemos lá!</p>
<p>Um abraço a todos e fiquem com Deus!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpit.com.br/artigos/palestra-no-fisl.phpit/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.phpit.com.br/artigos/palestra-no-fisl.phpit?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=palestra-no-fisl</feedburner:origLink></item>
		<item>
		<title>Promoção: PHPit leva um estudante sortudo ao FISL 12!</title>
		<link>http://feedproxy.google.com/~r/phpit/~3/azi4lmwtGoY/promocao-phpit-leva-um-estudante-sortudo-ao-fisl-12.phpit</link>
		<comments>http://www.phpit.com.br/artigos/promocao-phpit-leva-um-estudante-sortudo-ao-fisl-12.phpit#comments</comments>
		<pubDate>Fri, 17 Jun 2011 17:29:03 +0000</pubDate>
		<dc:creator>Rafael Jaques</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://www.phpit.com.br/?p=295</guid>
		<description><![CDATA[Fala, galera! Lembram que eu prometi uma promoção bombástica pra logo? Pois bem! Cá está! (Leia tudinho pra não ter problemas, hein&#8230;) Todo mundo sabe que estudante costuma sempre estar com a grana curta. Pensando nisso, o PHPit vai sortear &#8230; <a href="http://www.phpit.com.br/artigos/promocao-phpit-leva-um-estudante-sortudo-ao-fisl-12.phpit">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Fala, galera!</p>
<p>Lembram que eu prometi uma promoção bombástica pra logo?</p>
<p>Pois bem! Cá está! (Leia tudinho pra não ter problemas, hein&#8230;)</p>
<p>Todo mundo sabe que estudante costuma sempre estar com a grana curta. Pensando nisso, o PHPit vai sortear <strong>um ingresso da modalidade estudante </strong>para um estudante sortudo que gostaria de ir ao FISL!</p>
<p><div class="jbox yellow" >  <div  class="jbox-icon yellow">
    <img src="/wp-includes/images/custom/info.png">
  </div>  <div  class="jbox-title yellow">Atenção</div><div  class="jbox-content">É importante saber que você deve estar matriculado em uma instituição de ensino reconhecida pelo MEC, e o comprovante de matrícula deve ser apresentado durante o seu credenciamento no dia do evento.</div></div><br />
Como faz pra concorrer? É muito simples! <a href="http://bit.ly/mUh5Lq" target="_blank">Basta acessar a promoção no TwitPromo clicando aqui e seguir os passos indicados</a>.</p>
<p>O resultado da promoção será divulgado no dia <strong>21/06 às 15h30 </strong>no twitter do @_phpit. <strong>O ganhador tem 24 horas para se manifestar, a contar da divulgação do resultado, caso contrário perde o direito de retirar o prêmio. </strong>Caso não esteja seguindo os dois twitteres indicados, também perde a premiação!</p>
<p>Um abraço a todos, fiquem com Deus e boa sorte!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpit.com.br/artigos/promocao-phpit-leva-um-estudante-sortudo-ao-fisl-12.phpit/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.phpit.com.br/artigos/promocao-phpit-leva-um-estudante-sortudo-ao-fisl-12.phpit?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=promocao-phpit-leva-um-estudante-sortudo-ao-fisl-12</feedburner:origLink></item>
		<item>
		<title>Capturando imagens de um vídeo do YouTube ou Vimeo com o PHP</title>
		<link>http://feedproxy.google.com/~r/phpit/~3/xT6iaKM7-FI/capturando-imagens-de-um-video-do-youtube-ou-vimeo-com-o-php.phpit</link>
		<comments>http://www.phpit.com.br/artigos/capturando-imagens-de-um-video-do-youtube-ou-vimeo-com-o-php.phpit#comments</comments>
		<pubDate>Thu, 16 Jun 2011 13:03:18 +0000</pubDate>
		<dc:creator>Rafael Jaques</dc:creator>
				<category><![CDATA[APIs e WebServices]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[vimeo]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://www.phpit.com.br/?p=285</guid>
		<description><![CDATA[Adaptado do original: http://darcyclarke.me/development/get-image-for-youtube-or-vimeo-videos-from-url/ Prefácio Quando se está construindo uma aplicação social é sempre uma boa ideia incluir informações relevantes ao contexto. Isso ajuda a melhorar a experiência e torna tudo muito mais legal para o usuário. Alguns projetos podem &#8230; <a href="http://www.phpit.com.br/artigos/capturando-imagens-de-um-video-do-youtube-ou-vimeo-com-o-php.phpit">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><cite>Adaptado do original: <a href="http://darcyclarke.me/development/get-image-for-youtube-or-vimeo-videos-from-url/" target="_blank">http://darcyclarke.me/development/get-image-for-youtube-or-vimeo-videos-from-url/</a></cite></p>
<h2>Prefácio</h2>
<p>Quando se está construindo uma aplicação social é sempre uma boa ideia incluir informações relevantes ao contexto. Isso ajuda a melhorar a experiência e torna tudo muito mais legal para o usuário.</p>
<p>Alguns projetos podem necessitar de uma &#8216;screenshot&#8217; de algum vídeo. Isso é fácil de fazer e deixa seu site mais atraente para o usuário.<br />
Com um script bem simples é possível obter a thumbnail de um vídeo do YouTube ou Vimeo através da URL.</p>
<p>Logo abaixo você vê o snippet que pode ser utilizado em qualquer uma de suas aplicações.</p>
<pre class="brush: php; title: ; notranslate">function video_imagem($url){
    $url_imagem = parse_url($url);
    if($url_imagem['host'] == 'www.youtube.com' || $url_imagem['host'] == 'youtube.com'){
        $array = explode(&quot;&amp;&quot;, $url_imagem['query']);
        return &quot;http://img.youtube.com/vi/&quot;.substr($array[0], 2).&quot;/0.jpg&quot;;
    } else if($url_imagem['host'] == 'www.vimeo.com' || $url_imagem['host'] == 'vimeo.com'){
        $hash = unserialize(file_get_contents(&quot;http://vimeo.com/api/v2/video/&quot;.substr($url_imagem['path'], 1).&quot;.php&quot;));
        return $hash[0][&quot;thumbnail_small&quot;];
    }
}</pre>
<p>Você vai perceber que esse código possui um trecho determinar se a url passada pela função é de um vídeo do YouTube ou Vimeo e os cálculos necessários para trabalhar com ambos.</p>
<p>Seria interessante que você adicionasse uma contenção, caso o link não seja válido.</p>
<h2>Para o YouTube</h2>
<p>Você pode mudar a seguinte linha no script para retornar um tamanho diferente de imagem.</p>
<pre class="brush: php; title: ; notranslate">return &quot;http://img.youtube.com/vi/&quot;.substr($array[0], 2).&quot;/0.jpg&quot;;</pre>
<p>Existem variações de thumbnail disponíveis baseado nas miniaturas escolhidas pelo usuário quando enviou o vídeo. Você pode mudar o número para conseguir uma thumb diferente. Incrementando o número no final da imagem, você verá a próxima thumb disponível.</p>
<pre class="brush: php; title: ; notranslate">return &quot;http://img.youtube.com/vi/&quot;.substr($array[0], 2).&quot;/default.jpg&quot;; // Pequena - padrão
return &quot;http://img.youtube.com/vi/&quot;.substr($array[0], 2).&quot;/0.jpg&quot;; // Grande - padrão
return &quot;http://img.youtube.com/vi/&quot;.substr($array[0], 2).&quot;/1.jpg&quot;;
return &quot;http://img.youtube.com/vi/&quot;.substr($array[0], 2).&quot;/2.jpg&quot;;
return &quot;http://img.youtube.com/vi/&quot;.substr($array[0], 2).&quot;/3.jpg&quot;;</pre>
<h2>Para o Vimeo</h2>
<p>Você pode alterar a seguinte linha no script para retornar um tamanho de imagem diferente do Vimeo:</p>
<pre class="brush: php; title: ; notranslate">return $hash[0][&quot;thumbnail_small&quot;];</pre>
<p>As variações são:</p>
<pre class="brush: php; title: ; notranslate">return $hash[0][&quot;thumbnail_small&quot;];
return $hash[0][&quot;thumbnail_medium&quot;];
return $hash[0][&quot;thumbnail_large&quot;];</pre>
<h2>Conclusão</h2>
<p>As APIs de YouTube e Vimeo possuem muito mais informações que você pode capturar, incluindo o avatar de usuários e outras coisinhas bacanas. Tomara que esse pequeno script ajude a trazer um contexto mais bacana para os seus usuários ao invés de um simples link estático.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpit.com.br/artigos/capturando-imagens-de-um-video-do-youtube-ou-vimeo-com-o-php.phpit/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.phpit.com.br/artigos/capturando-imagens-de-um-video-do-youtube-ou-vimeo-com-o-php.phpit?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=capturando-imagens-de-um-video-do-youtube-ou-vimeo-com-o-php</feedburner:origLink></item>
		<item>
		<title>TcheLinux Bento Gonçalves 2011: Chamada de Trabalhos</title>
		<link>http://feedproxy.google.com/~r/phpit/~3/G1ZeCAk0VmE/tchelinux-bento-goncalves-2011-chamada-de-trabalhos.phpit</link>
		<comments>http://www.phpit.com.br/artigos/tchelinux-bento-goncalves-2011-chamada-de-trabalhos.phpit#comments</comments>
		<pubDate>Tue, 31 May 2011 19:26:12 +0000</pubDate>
		<dc:creator>Rafael Jaques</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[palestra]]></category>
		<category><![CDATA[seminário]]></category>
		<category><![CDATA[tchelinux]]></category>

		<guid isPermaLink="false">http://www.phpit.com.br/?p=280</guid>
		<description><![CDATA[Está aberta a chamada de trabalhos para o Seminário TcheLinux Bento Gonçalves 2011. O evento acontecerá na FTEC de Bento Gonçalves no dia 13 de Agosto. Serão aceitas palestras, apresentações de cases e workshops em todas as áreas da informática e &#8230; <a href="http://www.phpit.com.br/artigos/tchelinux-bento-goncalves-2011-chamada-de-trabalhos.phpit">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Está aberta a chamada de trabalhos para o Seminário TcheLinux Bento Gonçalves 2011.</p>
<p>O evento acontecerá na FTEC de Bento Gonçalves no dia 13 de Agosto.</p>
<p>Serão aceitas palestras, apresentações de cases e workshops em todas as áreas da informática e áreas co-relatas.</p>
<p>A chamada vai até as 23h59 do dia 6 de Junho de 2011 (segunda-feira). É permitida a submissão de mais de um trabalho.</p>
<p><a href="http://is.gd/tchelinux_bento_cfp" target="_blank">Tá esperando o quê? Clica aqui e manda o teu trabalho!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpit.com.br/artigos/tchelinux-bento-goncalves-2011-chamada-de-trabalhos.phpit/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.phpit.com.br/artigos/tchelinux-bento-goncalves-2011-chamada-de-trabalhos.phpit?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=tchelinux-bento-goncalves-2011-chamada-de-trabalhos</feedburner:origLink></item>
		<item>
		<title>Promoção – Livro Zend Framework na Prática</title>
		<link>http://feedproxy.google.com/~r/phpit/~3/n2896-1JleY/promocao-livro-zend-framework-na-pratica.phpit</link>
		<comments>http://www.phpit.com.br/artigos/promocao-livro-zend-framework-na-pratica.phpit#comments</comments>
		<pubDate>Sat, 28 May 2011 23:34:19 +0000</pubDate>
		<dc:creator>Rafael Jaques</dc:creator>
				<category><![CDATA[Promoções]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[livro]]></category>
		<category><![CDATA[promoção]]></category>
		<category><![CDATA[sorteio]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://www.phpit.com.br/?p=274</guid>
		<description><![CDATA[E aí, manolo! Tá afim de faturar, na faixa, um exemplar (e-book) do novo livro do Elton Minetto, o Zend Framework na Prática? (Se você quiser ler a resenha que escrevi sobre o livro, clique aqui) É muito simples! Siga &#8230; <a href="http://www.phpit.com.br/artigos/promocao-livro-zend-framework-na-pratica.phpit">Continue lendo <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>E aí, manolo! Tá afim de faturar, na faixa, um exemplar (e-book) do novo livro do <a href="http://about.me/eminetto" target="_blank">Elton Minetto</a>, o <a href="http://www.zfnapratica.com.br/" target="_blank">Zend Framework na Prática</a>?</p>
<p>(Se você quiser ler a resenha que escrevi sobre o livro, <a title="Livro – Zend Framework na Prática" href="http://www.phpit.com.br/artigos/livro-zend-framework-na-pratica.phpit">clique aqui</a>)</p>
<p>É muito simples! Siga os seguintes passos:</p>
<ol>
<li>Siga o <a href="http://www.twitter.com/_phpit" target="_blank">@_phpit</a>, o <a href="http://www.twitter.com/eminetto" target="_blank">@eminetto</a> e a <a href="http://www.twitter.com/coderockr" target="_blank">@coderockr</a>.</li>
<li>Twitte a seguinte frase: <strong>Quero ganhar o livro &#8216;Zend Framework Na Prática&#8217; &#8211; Cortesia do @_phpit e do @eminetto &#8211; http://kingo.to/Dvj</strong></li>
<li>E daí é só torcer!</li>
</ol>
<p>O sorteio ocorrerá no dia 3 de Junho (sexta).</p>
<p>Boa sorte a todos!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.phpit.com.br/artigos/promocao-livro-zend-framework-na-pratica.phpit/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.phpit.com.br/artigos/promocao-livro-zend-framework-na-pratica.phpit?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=promocao-livro-zend-framework-na-pratica</feedburner:origLink></item>
	</channel>
</rss>

