<?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>:::PTBYTE::: &#187; Programação e Desenvolvimento Web</title>
	<atom:link href="http://www.ptbyte.net/home/archives/category/programacao/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ptbyte.net/home</link>
	<description>Sempre a inovar</description>
	<lastBuildDate>Tue, 31 Jan 2012 17:02:47 +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>Land of Kachiri com Twitter!</title>
		<link>http://www.ptbyte.net/home/archives/431</link>
		<comments>http://www.ptbyte.net/home/archives/431#comments</comments>
		<pubDate>Tue, 15 Feb 2011 11:53:06 +0000</pubDate>
		<dc:creator>Epicurean</dc:creator>
				<category><![CDATA[Destaque-Site]]></category>
		<category><![CDATA[HTML + CSS]]></category>
		<category><![CDATA[Javascript & AJAX]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Portugal]]></category>
		<category><![CDATA[Programação e Desenvolvimento Web]]></category>
		<category><![CDATA[Projectos]]></category>
		<category><![CDATA[PTBYTE]]></category>
		<category><![CDATA[browser game]]></category>
		<category><![CDATA[land of kachiri]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.ptbyte.net/home/?p=431</guid>
		<description><![CDATA[<p>Foi criado a partir do dia de hoje um twitter associado ao jogo Land of Kachiri para que se possam exibir as actualizações que vão sendo feitas ao jogo!</p>
<p>Twitter: <a href="http://www.twitter.com/landofkachiri" target="_blank">www.twitter.com/landofkachiri</a></p>
<p>Site do jogo: <a href="http://testes.ptbyte.net/game" target="_blank">http://testes.ptbyte.net/game</a></p>
<p><a href="http://testes.ptbyte.net/game/"><img class="aligncenter" title="Land of Kachiri" src="http://testes.ptbyte.net/game/themes/default/images/land_kachiri_const.png" alt="" width="434" height="121" /></a>&#8230; <a href="http://www.ptbyte.net/home/archives/431" class="read_more">Ler o resto.</a></p>]]></description>
			<content:encoded><![CDATA[<p>Foi criado a partir do dia de hoje um twitter associado ao jogo Land of Kachiri para que se possam exibir as actualizações que vão sendo feitas ao jogo!</p>
<p>Twitter: <a href="http://www.twitter.com/landofkachiri" target="_blank">www.twitter.com/landofkachiri</a></p>
<p>Site do jogo: <a href="http://testes.ptbyte.net/game" target="_blank">http://testes.ptbyte.net/game</a></p>
<p><a href="http://testes.ptbyte.net/game/"><img class="aligncenter" title="Land of Kachiri" src="http://testes.ptbyte.net/game/themes/default/images/land_kachiri_const.png" alt="" width="434" height="121" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ptbyte.net/home/archives/431/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Actualizações PTBYTE</title>
		<link>http://www.ptbyte.net/home/archives/429</link>
		<comments>http://www.ptbyte.net/home/archives/429#comments</comments>
		<pubDate>Wed, 26 Jan 2011 14:06:06 +0000</pubDate>
		<dc:creator>Epicurean</dc:creator>
				<category><![CDATA[Destaque-Site]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação e Desenvolvimento Web]]></category>
		<category><![CDATA[PTBYTE]]></category>
		<category><![CDATA[actualização]]></category>
		<category><![CDATA[site]]></category>

		<guid isPermaLink="false">http://www.ptbyte.net/home/?p=429</guid>
		<description><![CDATA[<p>Boa tarde caros utilizadores.</p>
<p>Devido aos crescentes registos de spammers no nosso site vimo-nos obrigados a incluir um captcha no formulário de regist., Dte modo, encontram-se 2 captchas em funcionamento simultaneo no registo de utilizadores.</p>
<p>Melhores cumprimentos</p>
<p>PTBYTE Staff&#8230; <a href="http://www.ptbyte.net/home/archives/429" class="read_more">Ler o resto.</a></p>]]></description>
			<content:encoded><![CDATA[<p>Boa tarde caros utilizadores.</p>
<p>Devido aos crescentes registos de spammers no nosso site vimo-nos obrigados a incluir um captcha no formulário de regist., Dte modo, encontram-se 2 captchas em funcionamento simultaneo no registo de utilizadores.</p>
<p>Melhores cumprimentos</p>
<p>PTBYTE Staff</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ptbyte.net/home/archives/429/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Feito em Portugal</title>
		<link>http://www.ptbyte.net/home/archives/370</link>
		<comments>http://www.ptbyte.net/home/archives/370#comments</comments>
		<pubDate>Sun, 18 Jul 2010 00:36:32 +0000</pubDate>
		<dc:creator>Epicurean</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Portugal]]></category>
		<category><![CDATA[Programação e Desenvolvimento Web]]></category>
		<category><![CDATA[Feito em Portugal]]></category>

		<guid isPermaLink="false">http://www.ptbyte.net/home/?p=370</guid>
		<description><![CDATA[<p>Vimos por este meio dar a conhecer mais uma iniciativa Portuguesa!</p>
<p>Site: <a title="Feito em Portugal" href="http://fep.emrede.net/" target="_blank">http://fep.emrede.net/</a></p>
<p style="text-align: center;"><img class="aligncenter" style="vertical-align: middle;" title="Feito em Portugal" src="http://fep.emrede.net/medio.png" alt="Feito em Portugal" width="236" height="97" />&#8230; <a href="http://www.ptbyte.net/home/archives/370" class="read_more">Ler o resto.</a></p>]]></description>
			<content:encoded><![CDATA[<p>Vimos por este meio dar a conhecer mais uma iniciativa Portuguesa!</p>
<p>Site: <a title="Feito em Portugal" href="http://fep.emrede.net/" target="_blank">http://fep.emrede.net/</a></p>
<p style="text-align: center;"><img class="aligncenter" style="vertical-align: middle;" title="Feito em Portugal" src="http://fep.emrede.net/medio.png" alt="Feito em Portugal" width="236" height="97" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ptbyte.net/home/archives/370/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EntireWeb</title>
		<link>http://www.ptbyte.net/home/archives/343</link>
		<comments>http://www.ptbyte.net/home/archives/343#comments</comments>
		<pubDate>Mon, 21 Jun 2010 12:15:47 +0000</pubDate>
		<dc:creator>Epicurean</dc:creator>
				<category><![CDATA[Destaque-Site]]></category>
		<category><![CDATA[Informática]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[Pelo Mundo Fora]]></category>
		<category><![CDATA[Programação e Desenvolvimento Web]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[entireweb]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[OsLusitanos]]></category>
		<category><![CDATA[PTBYTE]]></category>
		<category><![CDATA[speedway]]></category>
		<category><![CDATA[spider]]></category>

		<guid isPermaLink="false">http://www.ptbyte.net/home/?p=343</guid>
		<description><![CDATA[<p>Surgiu no mercado a 7 de Abril de 2010 a versão <a title="entireweb" href="http://www.entireweb.com/" target="_blank">EntireWeb 3.0</a> Esta versão apresenta aos utilizadores um motor de busca muito mais simples e eficaz! Oferece ainda ao cibernautas a possibilidade de  expor anuncios no seu site ou &#8230; <a href="http://www.ptbyte.net/home/archives/343" class="read_more">Ler o resto.</a></p>]]></description>
			<content:encoded><![CDATA[<p>Surgiu no mercado a 7 de Abril de 2010 a versão <a title="entireweb" href="http://www.entireweb.com/" target="_blank">EntireWeb 3.0</a> Esta versão apresenta aos utilizadores um motor de busca muito mais simples e eficaz! Oferece ainda ao cibernautas a possibilidade de  expor anuncios no seu site ou comprar anuncios para serem expostos noutros sites (<a title="SpeedAds" href="http://www.entireweb.com/speedyads/" target="_blank">SpeedyAds</a>), muito semelhante ao sistema do <a title="Adsense" href="https://www.google.com/adsense/" target="_blank">google adsense</a>.</p>
<p>Pelo pouco que naveguei no site fiquei bastante supreendido pelo facto do PTBYTE.NET ja ter sido apanhado pela Spider da Entireweb! Pude ainda verificar através do sistema deles que o nosso site e do http://oslusitanos.ptbyte.net já tinham até sido visitados!</p>
<p style="text-align: center;"><img class="aligncenter" style="vertical-align: middle;" title="entireweb" src="http://www.mynewsdesk.com/files/4a55b040d328df4381f88aa56770ebeb/resources/ResourceLogotype/thumbnails/entireweb_presslogo_small.png?1270541724" alt="entireweb" width="300" height="88" /></p>
<p>Este motor de busca dá ainda a oportunidade aos utilizadores de deixarem gratuitamente o url do seu site para que a spider possa agendar uma visita ao conteudo cibernáutico! Oferece ainda a pesquisa por imagens tal como no google e investe ainda na pesquisa em tempo real!</p>
<p>A pesquisa em tempo real pelo que percebi é uma espécie de pesquisa por noticias de ultima hora que possam ter surgido. Algo semelhante a folhear um jornal com as noticias de ultima hora!</p>
<p>Combatendo a ultima implementação do <a title="google" href="http://www.google.com" target="_blank">Google</a> o EntireWeb surge já com a possibilidade de personalizar o fundo da página do motor de pesquisa apresentando ao utilizador uma pequena galeria com opções variadas de escolha! O interface do site pode ser alterado entre o Ingles ou o Sueco!</p>
<p>Mais reporto que o Site tem uma validação HTML5 que pode ser consultada <a title="html5" href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.entireweb.com" target="_blank">AQUI</a> ao contrário do Google que chumba neste momento com 37 erros!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ptbyte.net/home/archives/343/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Land Of Kachiri</title>
		<link>http://www.ptbyte.net/home/archives/319</link>
		<comments>http://www.ptbyte.net/home/archives/319#comments</comments>
		<pubDate>Sun, 23 May 2010 15:46:21 +0000</pubDate>
		<dc:creator>Epicurean</dc:creator>
				<category><![CDATA[HTML + CSS]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Javascript & AJAX]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Portugal]]></category>
		<category><![CDATA[Programação e Desenvolvimento Web]]></category>
		<category><![CDATA[Projectos]]></category>
		<category><![CDATA[PTBYTE]]></category>
		<category><![CDATA[browser game]]></category>
		<category><![CDATA[land of kachiri]]></category>

		<guid isPermaLink="false">http://www.ptbyte.net/home/?p=319</guid>
		<description><![CDATA[<p>Temos o prazer de anunciar o novo logotipo do site&#8230; O logo apresentará uma label a dizer sobre construção durante o tempo em que o jogo estará em desenvolvimento. Aproveitamos para informar que foi adicionado as caixas de texto do &#8230; <a href="http://www.ptbyte.net/home/archives/319" class="read_more">Ler o resto.</a></p>]]></description>
			<content:encoded><![CDATA[<p>Temos o prazer de anunciar o novo logotipo do site&#8230; O logo apresentará uma label a dizer sobre construção durante o tempo em que o jogo estará em desenvolvimento. Aproveitamos para informar que foi adicionado as caixas de texto do formulario de login um teclado virtual que permite alguma segurança para quem os usar na prevenção contra os Keyloggers.</p>
<p><img class="aligncenter" style="vertical-align: middle;" title="Land of Kachiri logo" src="http://testes.ptbyte.net/game/themes/default/images/land_kachiri_const.png" alt="Land of Kachiri logo" width="300" height="320" /></p>
<p>Site: <a title="Land of Kachiri" href="http://testes.ptbyte.net/game" target="_blank">Land of Kachiri</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ptbyte.net/home/archives/319/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tumblr</title>
		<link>http://www.ptbyte.net/home/archives/292</link>
		<comments>http://www.ptbyte.net/home/archives/292#comments</comments>
		<pubDate>Sun, 04 Apr 2010 17:10:59 +0000</pubDate>
		<dc:creator>Epicurean</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[Outros - Geral]]></category>
		<category><![CDATA[Pelo Mundo Fora]]></category>
		<category><![CDATA[Programação e Desenvolvimento Web]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[tumblr]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.ptbyte.net/home/?p=292</guid>
		<description><![CDATA[<p style="text-align: center;"><img class="aligncenter" title="Tumblr" src="http://assets.tumblr.com/images/logo.png?alpha&#38;5" alt="" width="210" height="49" /></p>
<p style="text-align: left;">Decidimos trazer hoje até vós o software OpenSource de blog que vai começando a dar trabalho na concorrência do mercado possuido já pela WordPress. Pelo pouco que pude observar no site deles <a href="http://www.tumblr.com" target="_blank">www.tumblr.com</a> existem já uma serie de utilizadores convertidos &#8230; <a href="http://www.ptbyte.net/home/archives/292" class="read_more">Ler o resto.</a></p>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" title="Tumblr" src="http://assets.tumblr.com/images/logo.png?alpha&amp;5" alt="" width="210" height="49" /></p>
<p style="text-align: left;">Decidimos trazer hoje até vós o software OpenSource de blog que vai começando a dar trabalho na concorrência do mercado possuido já pela WordPress. Pelo pouco que pude observar no site deles <a href="http://www.tumblr.com" target="_blank">www.tumblr.com</a> existem já uma serie de utilizadores convertidos a este software. Ele promete melhores compatibilidades com os browser de telemóveis, nomeadamente IPhone, entre muitas mais outras funcionalidades. No site podemos igualmente encontrar uma explicação da API, Themes de download gratuito e Themes Premium que vão de valores desde $9 até cerca de $50. O projecto Tumblr tem já 3 anos e 1 mês e podem acompanhar o desenvolvimento através do blog deles <a href="http://staff.tumblr.com/" target="_blank">http://staff.tumblr.com/</a></p>
<p style="text-align: left;">No site têm disponibilizado um grafico com o numero de acessos de utilizadores. So através deste grafico podemos constatar claramente o aumento da popularidade nos ultimos tempos.</p>
<p style="text-align: center;"><img class="aligncenter" style="vertical-align: middle;" title="Monthly Global Page Views" src="http://www.quantcast.com/profile/trafficGraph?wunit=wtpub:pixel/p-19UtqE8ngoZbM&amp;drg=gbl&amp;dty=ar&amp;dtr=dm&amp;gl=6mo&amp;ggt=large&amp;showDeleteButtons=false&amp;width=840&amp;reachType=rolling&amp;country=US" alt="Monthly Global Page Views" width="600" height="286" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ptbyte.net/home/archives/292/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>3.Scape &#8211; Design, Comunicação e Multimédia</title>
		<link>http://www.ptbyte.net/home/archives/242</link>
		<comments>http://www.ptbyte.net/home/archives/242#comments</comments>
		<pubDate>Sun, 21 Mar 2010 22:57:17 +0000</pubDate>
		<dc:creator>S.Paulino</dc:creator>
				<category><![CDATA[HTML + CSS]]></category>
		<category><![CDATA[Informática]]></category>
		<category><![CDATA[Javascript & AJAX]]></category>
		<category><![CDATA[Outros - Geral]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação e Desenvolvimento Web]]></category>
		<category><![CDATA[3scape]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[designer]]></category>
		<category><![CDATA[freelancer]]></category>

		<guid isPermaLink="false">http://www.ptbyte.net/home/?p=242</guid>
		<description><![CDATA[<p><img class="aligncenter" src="http://www.ptbyte.net/home/wp-content/uploads/2011/03/3Scape-logo-150x105.jpg" alt="" width="150" height="105" /></p>
<p>Olá meus caros amigos.</p>
<p>Aproveitamos a oportunidade que a PTBYTE aqui nos disponibiliza para apresentarmos a 3.Scape.</p>
<p>A 3.Scape é um conjunto de trabalhadores independentes com o objectivo de inovar a área dos Sistemas de Informação, Multimédia e Design.</p>
<p>Como &#8230; <a href="http://www.ptbyte.net/home/archives/242" class="read_more">Ler o resto.</a></p>]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter" src="http://www.ptbyte.net/home/wp-content/uploads/2011/03/3Scape-logo-150x105.jpg" alt="" width="150" height="105" /></p>
<p>Olá meus caros amigos.</p>
<p>Aproveitamos a oportunidade que a PTBYTE aqui nos disponibiliza para apresentarmos a 3.Scape.</p>
<p>A 3.Scape é um conjunto de trabalhadores independentes com o objectivo de inovar a área dos Sistemas de Informação, Multimédia e Design.</p>
<p>Como tal temos à sua disposição vários produtos em cada uma destas áreas, desde Design de Imagem Corporativa e estacionário, até à criação de objectos e animação em 3D, sem esquecer o nosso forte, o desenvolvimento WEB e aplicacional.</p>
<p>É neste ponto que temos também o prazer de lhe apresentar o Scap3, o sistema CMS criado a pensar no utilizador, pela a 3.Scape e para os nossos clientes em exclusivo. Com o Scap3 poderá alterar os seus conteúdos web com facilidade, quer tenha um simples site corporativo ou uma sofisticada loja online.</p>
<p>Muito em breve poderá também vir a conhecer os nossos inovadores produtos na área comercial e de gestão de clientes, o Scap€ POS e o Scap3 CRM. Totalmente desenvolvidos em PHP e com a possibilidade de aceder online, caso seja o seu desejo.</p>
<p>Contactar a 3.Scape é fácil, basta enviar um email para <a href="mailto:fale.com.3scape@gmail.com" target="_blank">fale.com.3scape@gmail.com</a>, o novo projecto 3.Scape foi feito só a pensar em si. Temos desde já à sua disposição o <a href="http://www.ptbyte.net/home/wp-content/uploads/2011/03/Catalogo3scape2011.pdf" target="_blank">catálogo 3.Scape 2011</a>, com o qual poderá esclarecer as suas dúvidas e clarificará o conceito deste projecto.</p>
<p>Contacte-nos e peça um orçamento gratuito para o seu projecto. E lembre-se, com 3.Scape, expanda os seus horizontes!</p>
<p>Ficaremos à sua espera.</p>
<p>Atenciosamente,</p>
<p><a href="mailto:fale.com.3scape@gmail.com" target="_blank">Sérgio Paulino</a>,<br />
Programador e Fundador do projecto 3.Scape</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ptbyte.net/home/archives/242/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP &#8211; Mais de 50 dicas sobre desempenho e segurança</title>
		<link>http://www.ptbyte.net/home/archives/132</link>
		<comments>http://www.ptbyte.net/home/archives/132#comments</comments>
		<pubDate>Fri, 26 Feb 2010 10:00:04 +0000</pubDate>
		<dc:creator>semogj</dc:creator>
				<category><![CDATA[Destaque-Site]]></category>
		<category><![CDATA[Informática]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação e Desenvolvimento Web]]></category>

		<guid isPermaLink="false">http://www.ptbyte.net/home/?p=132</guid>
		<description><![CDATA[<p>Como devem saber, o PHP é uma linguagem de scripting <em>&#8220;server-side</em>&#8220;, Open-Source e bastante popular, sendo utilizada por inúmeros sites e aplicações web dinâmicas, inclusive este mesmo site.O facto de ser Open-Source significa que qualquer pessoa pode contribuir para &#8230; <a href="http://www.ptbyte.net/home/archives/132" class="read_more">Ler o resto.</a></p>]]></description>
			<content:encoded><![CDATA[<p>Como devem saber, o PHP é uma linguagem de scripting <em>&#8220;server-side</em>&#8220;, Open-Source e bastante popular, sendo utilizada por inúmeros sites e aplicações web dinâmicas, inclusive este mesmo site.O facto de ser Open-Source significa que qualquer pessoa pode contribuir para o projecto, por exemplo, consultando o seu código fonte e sugerindo possíveis correcções, optimizações e funcionalidades, ou testando e documentando o mesmo, ou mesmo compilar e construir os binários à sua medida, escolhendo as bibliotecas que deseje e alterando o código fonte do que desejar ou precisar.</p>
<p style="text-align: center;"><a href="http://www.ptbyte.net/home/wp-content/uploads/2010/02/peluchephp.jpg"><img class="size-medium wp-image-134 aligncenter" title="peluchephp" src="http://www.ptbyte.net/home/wp-content/uploads/2010/02/peluchephp-300x224.jpg" alt="" width="300" height="224" /></a></p>
<p>Como qualquer linguagem de programação, esta encontra-se optimizada para se obter o maior rendimento possivel das suas funcionalidades, mas cabe ao programador a decisão da abordagem que irá tomar para desenvolver a sua aplicação e chegar a um consenso entre segurança e desempenho.</p>
<p><span id="more-132"></span>Venho então trazer um conjunto de dicas e boas práticas para optimização do vosso código PHP, para melhorar o desempenho geral das vossas aplicações web. Muitas destas dicas foram confirmadas em tutoriais, apresentações e relatórios pela própria Zend (empresa que desenvolve activamente o PHP), ou em outros locais, sendo citado esses mesmos locais onde estas foram encontradas.</p>
<h2>50 dicas sobre desempenho e segurança no PHP:<br class="spacer_" /></h2>
<ol>
<li>A função <a href="http://www.php.net/echo" target="_blank"><em>echo</em></a> é mais rápida que <a href="http://www.php.net/print" target="_blank"><em>print</em></a>. <a href="http://web.archive.org/web/20050407085143/http://dynacker.dotgeek.org/printvsecho/" target="_blank">[Citação]</a> Mas a diferença não é muito notável, sendo mais lento em algumas ocasiões. <a href="http://phplens.com/lens/php-book/optimizing-debugging-php.php" target="_blank">[Citação]</a></li>
<li>Ao trabalhar com Strings, caso não utilize avaliação de variáveis no meio da string ( &#8220;Olá {$name} !&#8221; ),  evite utilizar aspas duplas (“) e opte por aspas simples (‘) porque o PHP irá sempre procurar pela existência de variáveis em strings com aspas duplas (&#8220;string exemplo&#8221;). <a href="http://spindrop.us/2007/03/03/php-double-versus-single-quotes/" target="_blank">[Citação]</a></li>
<li>Prefira usar a função <a href="http://pt.php.net/manual/en/function.sprintf.php" target="_blank">sprintf</a> ao invés de variáveis no meio de strings com aspas duplas. É aproximadamente 10x mais rápido. <a href="http://teroheikkinen.iki.fi/blog/php-s_different_echo_methods_performance_comparison/" target="_blank">[Citação]</a></li>
<li>Utilize múltiplos parâmetros na função <a href="http://www.php.net/echo" target="_blank">echo</a> (echo &#8216;string1&#8242;, &#8216;string2&#8242; , &#8216;string 3&#8242; ; )em vez de concatenação de strings ( echo &#8216;string1&#8242;. &#8216;string2&#8242; . &#8216;string 3&#8242; ; ). Note que a diferença está entre a utilização de ponto (.) &#8211; concatenação, e vírgula (,) &#8211; parâmetro. Isto <span style="text-decoration: underline;">apenas</span> se refere a strings na função <a href="http://www.php.net/echo" target="_blank">echo</a>! <a href="http://blog.libssh2.org/index.php?/archives/28-How-long-is-a-piece-of-string.html" target="_blank">[Citação]</a></li>
<li>Evite realizar cálculos dentro de ciclos. Defina o limite máximo para os seus ciclos <em><a href="http://www.php.net/for" target="_blank">for</a></em> antes e não lá dentro. Neste exemplo: <a href="http://www.php.net/for" target="_blank">for</a> ($x=0; $x &lt; count($array); $x), a função <em><a href="http://pt.php.net/manual/en/function.count.php" target="_blank">count</a> </em>é chamada  a cada iteração do ciclo, quando o valor poderia estar ser guardado numa variável $max=count($array); antes desse mesmo ciclo. <a href="http://www.php.lt/benchmark/phpbench.php" target="_blank">[Citação]</a></li>
<li>Realize o <a href="http://pt.php.net/manual/en/function.unset.php" target="_blank"><em>Unset </em></a>das suas variáveis ou atribua-lhes o valor NULL para libertar memória, especialmente em <a href="http://pt.php.net/manual/en/book.array.php" target="_blank">arrays</a> com grandes dimensões. No caso de objectos, ambas as acções anteriores irão causar a invocação do destrutor (<a href="http://pt.php.net/manual/en/language.oop5.decon.php" target="_blank">função __destruct()</a>) da classe. Note que no caso da atribuição de NULL, a variável só será destruída assim que perder todas as referências para a mesma. <a href="http://lists.nyphp.org/pipermail/talk/2003-January/001855.html" target="_blank">[Citação]</a></li>
<li>Evite métodos mágicos como <a href="http://uk2.php.net/manual/en/language.oop5.overloading.php" target="_blank">__get,  __set</a>, <a href="http://www.php.net/__autoload" target="_blank">__autoload</a>. <a href="http://www.ilia.ws/files/zend_performance.pdf" target="_blank">[Citação]</a></li>
<li>Utilize <a href="http://pt.php.net/manual/en/function.require.php" target="_blank">require()</a> / <a href="http://www.php.net/manual/en/function.include.php" target="_blank">include()</a> invés de <a href="http://pt2.php.net/manual/en/function.require-once.php" target="_blank">require_once()</a> /<a href="http://pt2.php.net/manual/en/function.include-once.php" target="_blank"> include_once()</a>, pois estas últimas necessitam de verificar se o ficheiro já não foi incluído no código. <a href="http://peter.mapledesign.co.uk/weblog/archives/writing-faster-php-code-1-require_once" target="_blank">[Citação]</a></li>
<li>Utilize caminhos absolutos em includes e requires ao invés de caminhos relativos (../ficheiro.php) porque levam menos tempo a serem resolvidos para endereços reconhecíveis pelo sistema operativo. <a href="http://t3.dotgnu.info/blog/php/include_once-mostly-harmless.html" target="_blank">[Citação]</a></li>
<li><a href="http://pt.php.net/manual/en/function.require.php" target="_blank">require()</a> e <a href="http://www.php.net/manual/en/function.include.php" target="_blank">include()</a> são idênticos com uma diferença: Na função <a href="http://pt.php.net/manual/en/function.require.php" target="_blank">require</a>, a execução falha com erro fatal se o ficheiro estiver em falta. <a href="http://groups.google.com/group/php.general/browse_thread/thread/72332fe1ed21e104/b1650148cd6e3c17?lnk=st&amp;q=php+require+vs+include+performance#b1650148cd6e3c17" target="_blank">[Citação]</a></li>
<li>Desde a versão 5 do PHP, o momento temporal em que o script iniciou a sua execução pode ser encontrado em <a href="http://www.php.net/manual/en/reserved.variables.server.php#92121" target="_blank">$_SERVER[’REQUEST_TIME’]</a>. Utilize isto em vez das funções  <a href="http://pt.php.net/manual/en/function.time.php" target="_blank">time()</a> ou  <a href="http://pt.php.net/manual/en/function.microtime.php" target="_blank">microtime()</a>. <a href="http://www.php.net/time" target="_blank">[Citação]</a></li>
<li><a href="http://www.regular-expressions.info/" target="_blank">Regex</a> baseado em bibliotecas <a href="http://www.php.net/pcre">PCRE</a> é muito mais rápido que <a href="http://www.php.net/ereg">EREG</a>, mas se possivel recorra a funções nativas mais rápidas como  <a href="http://www.php.net/strncasecmp" target="_blank">strncasecmp</a>, <a href="http://www.php.net/strpbrk" target="_blank">strpbrk</a> e <a href="http://www.php.net/stripos" target="_blank">stripos</a>. <a href="http://talks.php.net/show/php-best-practices/36" target="_blank">[Citação]</a></li>
<li>Quando analisar XML no PHP, experimente <a href="http://www.bin-co.com/php/scripts/xml2array/" target="_blank">xml2array</a>, que faz uso das <a href="http://www.php.net/xml" target="_blank">funções XML do PHP</a>.  Para HTML pode experimentar <a href="http://www.php.net/dom" target="_blank">DOM  document</a> do PHP ou <a href="http://www.php.net/domxml" target="_blank">DOM XML</a> na versão 4 do PHP.  <a href="http://htmlparsing.icenine.ca/" target="_blank">[Citação]</a></li>
<li><a href="http://www.php.net/str_replace" target="_blank">str_replace</a> é mais rápido que  <a href="http://www.php.net/preg_replace">preg_replace</a>, mas às vezes <a href="http://www.php.net/strtr" target="_blank">strtr</a> é mais rápido que <a href="http://www.php.net/str_replace" target="_blank">str_replace</a> com grandes strings. Utilizar <a href="http://pt2.php.net/manual/en/function.array.php" target="_blank">array()</a> dentro de <a href="http://www.php.net/str_replace" target="_blank">str_replace</a> é usualmente mais rápido que múltiplos <a href="http://www.php.net/str_replace" target="_blank">str_replace</a>. <span style="text-decoration: line-through;">[Citação]</span></li>
<li>Ao contrário de outras linguagens de programação populares, declarações“else if” no PHP são mais rápidas que declarações <a href="http://en.wikipedia.org/wiki/Switch_statement">select</a> também conhecido como <a href="http://www.php.net/switch">case/switch</a>.  <a href="http://www.php.lt/benchmark/phpbench.php" target="_blank">[Citação]</a> Com a evolução contínua do php, actualmente a diferença é muito insignificante, mas denota-se que a utilização do operador <a href="http://www.php.net/manual/en/language.operators.comparison.php">=== (idêntico) </a>nas condições if é mais rápido que a utilização do operador <a href="http://www.php.net/manual/en/language.operators.comparison.php">== (igual)</a>.</li>
<li><a href="http://php.net/manual/en/language.operators.errorcontrol.php" target="_blank">Supressão de erros com @</a> é bastante custoso a nível de desempenho. <a href="http://michelf.com/weblog/2005/bad-uses-of-the-at-operator/" target="_blank">[Citação]</a></li>
<li>Para reduzir a utilização de largura de rede, active mod_deflate no Apache v2 <a href="http://howtoforge.com/apache2_mod_deflate" target="_blank">[Citação]</a> ou tente mod_gzip em Apache v1. <a href="http://talks.php.net/show/php-best-practices/40" target="_blank">[Citação]</a></li>
<li>Encerre as conexões à sua  base de dados quando não precisar mais delas. <a href="http://uk.php.net/manual/en/function.mysql-close.php#69063" target="_blank">[Citação]</a></li>
<li>Utilizar $row[’id’] é 7 vezes mais rápido que $row[id], porque se não fornecer aspas, o PHP terá que &#8220;adivinhar&#8221; qual o índice que se refere, assumindo que não seja uma constante. <a href="http://www.php.net/constants#language.constants.syntax" target="_blank">[Citação]</a></li>
<li>Utilize as tags &lt;?php … ?&gt; para declarar  PHP pois todos os outros estilos encontram-se classificados como <em><strong><tt>DEPRECATED</tt></strong></em>, incluindo as tags curtas (&lt;? &#8230; ?&gt; ). <a href="http://talks.php.net/show/php-best-practices/10" target="_blank">[Citação]</a></li>
<li>Utilize códico estrito, evite supressao de erros, notificações (notices) e avisos (warnings) resultando num código mais limpo e com Use strict code, avoid suppressing errors, notices and warnings thus  resulting in cleaner code e menos sobrecargas. Considere activar sempre <a href="http://www.php.net/error_reporting" target="_blank">error_reporting(E_ALL)</a> (em ambiente de desenvolvimento). <a href="http://talks.php.net/show/php-best-practices/11" target="_blank">[Citação]</a></li>
<li>Scripts PHP são gerados 2-10 vezes mais lentamente pelo httpd do Apache que uma pagina estática. Tente utilizar mais páginas estáticas em vez de scripts no servidor. <a href="http://talks.php.net/show/php-best-practices/34" target="_blank">[Citação]</a></li>
<li>Os scripts PHP (se não utilizarem cache) são interpretados e compilados no momento e cada vez que são chamados. Instale um produto de gestão de cache do PHP (como o <a href="http://www.php.net/memcache" target="_blank">memcached</a> ou <a href="http://eaccelerator.net/" target="_blank">eAccelerator</a> ou <a href="http://sourceforge.net/projects/turck-mmcache/" target="_blank">Turck MMCache</a>)  para tipicamente incrementar o desepenho em 25-100% removendo o tempos de compilação. Pode também <a href="http://www.cpanel.net/support/docs/ea/ea3/ea3php_php_extensionmgr.html" target="_blank">configurar eAccelerator no cPanel utilizando EasyApache3</a>. <a href="http://www.phpfive.net/php-opcode-caching-with-eaccelerator-article45.htm" target="_blank">[Citação]</a></li>
<li>Uma alternativa às técnicas de cache quando se tem páginas que não mudam muito frequentemente é realizar cache do HTML produzido pelas páginas PHP. Tente <a href="http://smarty.php.net/" target="_blank">Smarty</a> ou <a href="http://pear.php.net/Cache_Lite" target="_blank">Cache Lite</a>.  <a href="http://phplens.com/phpeverywhere/tuning-apache-php" target="_blank">[Citação]</a></li>
<li>Utilize a função <a href="http://php.net/manual/en/function.isset.php" target="_blank">isset</a> onde possivel em lugar da função <a href="http://pt.php.net/manual/en/function.strlen.php" target="_blank">strlen</a>. (por exemplo:  if (strlen($foo)  &lt; 5) { echo “Foo is too short”; } VS. if (!isset($foo{5})) { echo  “Foo is too short”; } ). <a href="http://blog.dynom.nl/archives/String-length-vs-isset-to-check-string-lengths_20070807_5.html" target="_blank">[Citação]</a></li>
<li>++$i é mais rápido que $ i++,  logo <a href="http://www.hudzilla.org/phpwiki/index.php?title=Pre-increment_where_possible" target="_blank">utilize  pre-incremento quando possível</a>. <a href="http://talks.php.net/show/php-best-practices/32" target="_blank">[Citação]</a></li>
<li>Faça uso das inúmeras <a href="http://pt.php.net/manual/en/indexes.php" target="_blank">funções predefinidas do PHP</a>, não tente construir as suas próprias pois as nativas irão ser com certeza muito mais rápidas. Se tiver funções dispendiosas a nível temporal e  recursos, considere escreve-las como extensões C ou módulos. <a href="http://talks.php.net/show/php-best-practices/31" target="_blank">[Citação]</a></li>
<li>Crie um perfil (<em>profile</em>) do seu código. Um <em>profiler </em>revelará os consumos das variadas secções do seu código. O <a href="http://xdebug.org/" target="_blank">Xdebug debugger</a> já contem um <em>profiler</em>. <em>Profiling </em>irá mostrar uma síntese dos gargalos existentes. <a href="http://talks.php.net/show/php-best-practices/39" target="_blank">[Citação]</a></li>
<li>Documente o seu código! Adopte o estilo de documentação do <a href="http://www.phpdoc.org/" target="_blank">phpdoc</a> (semelhante a javadoc do Java), para poder utilizar sem problemas a <a href="http://www.phpdoc.org/" target="_blank">ferramenta de geração automática de documentação do php</a>. <a href="http://talks.php.net/show/php-best-practices/16" target="_blank">[Citação]</a></li>
<li>Aprenda a diferença entre bom código e mau código. <a href="http://www.sitepoint.com/blogs/2007/05/25/good-and-bad-php-code/" target="_blank">[Citação]</a></li>
<li>Agarre-se aos padrões de programação, pois estes irão facilitar a compreensão dos códigos criados por outras pessoas e vice-versa. <a href="http://talks.php.net/show/php-best-practices/15" target="_blank">[Citação]</a></li>
<li>Separa o código, conteúdo e apresentação: deixe o seu código PHP separado do seu HTML. <a href="http://www.ibm.com/developerworks/library/wa-phprock1/index.html" target="_blank">[Citação]</a></li>
<li>Não se preocupe em utilizar sistemas complexos de <em>templates </em>como Smarty, se possivel utilize funções incluídas no PHP como <a href="http://www.php.net/ob_get_contents" target="_blank">ob_get_contents</a> e simplesmente puxe os dados da sua base de dados (aconselho vivamente a leitura da citação). <a href="http://www.massassi.com/php/articles/template_engines/" target="_blank">[Citação]</a></li>
<li>*<strong>Nunca</strong>* confie nas variáveis provenientes do lado do utilizador (como o $_POST) utilize <a href="http://www.php.net/mysql_real_escape_string" target="_blank">mysql_real_escape_string</a> quando recorrer ao mysql, e <a href="http://www.php.net/htmlspecialchars" target="_blank">htmlspecialchars</a> quando realizar output dessas mesmas variáveis para HTML. <a href="http://talks.php.net/show/php-best-practices/19">[Citação]</a> Utilize <a href="http://www.php.net/mysql_real_escape_string" target="_blank">mysql_real_escape_string</a> em vez de <a href="http://pt.php.net/manual/en/function.mysql-escape-string.php" target="_blank">mysql_escape_string</a> (<em><strong><tt>DEPRECATED</tt></strong></em>)  ou addslashes.<a href="http://www.jemjabella.co.uk/articles/php-security-tips" target="_blank">[Citação]</a></li>
<li>Por questões de segurança, nunca deixe algo que possa expor informação sobre caminhos, extensões e configurações, como o display_errors ou <a href="http://www.php.net/phpinfo" target="_blank">phpinfo</a>() na sua directoria raiz (aplica-se principalmente em ambientes de produção). <a href="http://talks.php.net/show/php-best-practices/24" target="_blank">[Citação]</a></li>
<li>Desligue as <a href="http://www.php.net/register_globals" target="_blank">register_globals</a> (estão desactivadas por defeito por alguma razão!). Nenhum script em ambiente de produção necessita disto activado, pois representa um enorme risco de segurança. Corrija qualquer script que necessite esta funcionalidade activa e que recorra a <a href="http://uk.php.net/manual/en/security.globals.php#82542" target="_blank">unregister_globals()</a>.  Faça isto o mais rapidamente possivel porque a funcionalidade será removida no PHP6. <a href="http://talks.php.net/show/php-best-practices/27" target="_blank">[Citação]</a></li>
<li>Evite usar texto simples quando armazenar ou avaliar passwords, evitando assim qualquer exposição. Ao invés, utilize uma hash, como a hash <a href="http://www.php.net/md5" target="_blank">md5</a> ou <a href="http://pt.php.net/manual/en/function.sha1.php" target="_blank">sha1</a> ou uma combinação de ambas (e se possivel e necessário, recorrendo a sal (salt)). <a href="http://talks.php.net/show/php-best-practices/28" target="_blank">[Citação]</a></li>
<li>Utilize <a href="http://www.php.net/ip2long" target="_blank">ip2long</a>() e <a href="http://www.php.net/long2ip" target="_blank">long2ip</a>() para armazenar endereços IP como inteiros (long) ao invés de strings. <span style="text-decoration: line-through;">[Citação]</span></li>
<li>Quando utilizar <a href="http://pt.php.net/manual/en/function.header.php" target="_blank">header</a>(‘Location: ‘.$url); lembre-se de colocar à frente um die(); porque o script continua a executar mesmo que a localização mude. <a href="http://richardlynch.blogspot.com/2007/06/php-header-location-redirect-refresh.html" target="_blank">[Citação]</a></li>
<li>Em <a href="http://www.php.net/oop" target="_blank">Programação Orientada a Objectos</a>, se existir um método que possa ser estático (<a href="http://en.wikipedia.org/wiki/Method_%28computer_science%29#Static_methods" target="_blank">static   method</a>), declare-o estático. Velocidade é melhorada por um factor de 4. <a href="http://ilia.ws/files/frankfurt_perf.pdf" target="_blank">[Citação]</a>.</li>
<li>Incrementar uma variável local num método de Programação OO  é o mais rápido, sendo aproximadamente o mesmo que aceder a uma variável local numa função.  Incrementar uma variável global é 2 vezes mais lento que uma variável local. <a href="http://phplens.com/lens/php-book/optimizing-debugging-php.php" target="_blank">[Citação]</a></li>
<li>Incrementar uma propriedade de um objecto (eg. $this-&gt;prop++) é 3 vezes mais lento que incrementar uma variável local. <a href="http://phplens.com/lens/php-book/optimizing-debugging-php.php" target="_blank">[Citação]</a></li>
<li>Incrementar uma variável local não definida é 9 a 10 vezes mais lento que incrementar uma variável pré-inicializada. <a href="http://phplens.com/lens/php-book/optimizing-debugging-php.php" target="_blank">[Citação]</a></li>
<li>Somente declarar uma variável global dentro de uma função sem a utilizar têm efeitos negativos no desempenho (aproximadamente o mesmo que incrementar uma variável local), visto o PHP provavelmente verificar se a mesma já existe. <a href="http://phplens.com/lens/php-book/optimizing-debugging-php.php" target="_blank">[Citação]</a></li>
<li>Invocação de métodos parece  ser independente do número de métodos definidos na classe, porque ao adicionar 10 métodos extras na classe de teste (antes e depois do método de teste), não houve mudanças no desempenho. <a href="http://phplens.com/lens/php-book/optimizing-debugging-php.php" target="_blank">[Citação]</a></li>
<li>Métodos em classes derivadas executam mais depressa que  que os métodos nas classes base. <a href="http://phplens.com/lens/php-book/optimizing-debugging-php.php" target="_blank">[Citação]</a></li>
<li>A chamada de uma função com um parâmetro e sem corpo (corpo vazio), leva aproximadamente o mesmo tempo que fazer 7-8 operações de incrementação de variáveis locais ($var++). Chamadas de métodos similares levam aproximadamente o tempo de 15 operações de incrementação de variáveis locais. <a href="http://phplens.com/lens/php-book/optimizing-debugging-php.php" target="_blank">[Citação]</a></li>
<li>Nem tudo precisa de ser realizado em Programação Orientada a Objectos, pois normalmente só sobrecarrega o programa, visto as chamadas de métodos e objectos consumirem muita memória. <a href="http://talks.php.net/show/php-best-practices/33" target="_blank">[Citação]</a></li>
<li>Evite o problema de injecção de cabeçalhos na função <a href="http://pt.php.net/manual/en/function.mail.php" target="_blank">mail()</a> do PHP. <a href="http://uk3.php.net/manual/en/function.mail.php#56788">[Citação]</a></li>
<li><a href="http://en.wikipedia.org/wiki/RTFM" target="_blank">RTFM!</a> O PHP oferece um <a href="http://www.php.net/manual/" target="_blank">enorme e fantástico manual</a>, sendo possivelmente um dos melhores na Internet, contendo a documentação de todas as bibliotecas em inglês simples (também <a href="http://www.php.net/manual/pt_BR/" target="_blank">disponível em português do Brasil</a>), um conjunto de exemplos práticos e participação da comunidade com ainda mais exemplos e dicas. Simplesmente UTILIZE-O!!! <a href="http://xkcd.com/293/" target="_blank">[Citação]</a></li>
</ol>
<p>A lista foi retirada, traduzida e adaptada de <a href="http://www.hm2k.com/posts/50-php-optimisation-tips-revisited" target="_blank">hm2k.com</a>.</p>
<p>Existe ainda programadores que realizam programas e scripts que recorrem a funções e funcionalidades de versões antigas do php (PHP 5.2 ou inferior) que se encontram desactualizadas e marcadas para remoção. Neste caso alerto para evitar a utilização de funções da biblioteca  de Regex POSIX (entre elas <a href="http://php.net/manual/en/function.ereg.php" target="_blank"><span style="text-decoration: underline;">ereg()</span></a>, <a href="http://php.net/manual/en/function.eregi.php" target="_blank"><span style="text-decoration: underline;">eregi()</span></a>, <a href="http://php.net/manual/en/function.split.php" target="_blank"><span style="text-decoration: underline;">split()</span></a>) visto estas estarem classificadas como <em><strong><tt>DEPRECATED</tt></strong></em> a partir do PHP 5.3, tendo já a remoção em vista no PHP 6. Como alternativa existem as funções  da biblioteca <a href="http://www.php.net/pcre">PCRE</a> que demonstram um desempenho superior e funcionamento semelhante.</p>
<p>Lista de funções POSIX regex:<br />
 <a rel="nofollow" href="http://www.php.net/manual/en/ref.regex.php">http://www.php.net/manual/en/ref.regex.php</a></p>
<p>Lista de funções PCRE:<br />
 <a rel="nofollow" href="http://www.php.net/manual/en/ref.pcre.php">http://www.php.net/manual/en/ref.pcre.php</a></p>
<p>Evitem também utilizar o operador de referência &amp; em objectos,  pois estes desde do PHP 5 que são sempre passados por referencia.</p>
<p>Para terminar, denoto <a href="http://www.php.lt/benchmark/phpbench.php" target="_blank"><span style="text-decoration: underline;">este  site</span></a> onde poderão verificar alguns testes simples de <a href="http://pt.wikipedia.org/wiki/Benchmarking" target="_blank">benchmarking </a>onde se analisa a velocidade de diferentes funções e estruturas de  decisão. Tenham em mente que os testes podem ser facilmente adulterados  pela carga do servidor onde a página está alojada, sendo necessário  actualizar (recarregando a página) e observar os resultados varias  vezes.</p>
<p><strong>Nota:</strong> Este artigo foi redigido e publicado em primeira mão no <a href="http://pplware.sapo.pt/2010/01/php-e-a-quinta-feira-50-dicas-sobre-desempenho-e-segurana/" target="_blank"><span style="text-decoration: underline;">Peopleware</span></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ptbyte.net/home/archives/132/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP &#8211; Exporte os seus dados</title>
		<link>http://www.ptbyte.net/home/archives/36</link>
		<comments>http://www.ptbyte.net/home/archives/36#comments</comments>
		<pubDate>Wed, 24 Feb 2010 00:00:27 +0000</pubDate>
		<dc:creator>semogj</dc:creator>
				<category><![CDATA[Outros - Geral]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programação e Desenvolvimento Web]]></category>
		<category><![CDATA[exportação]]></category>
		<category><![CDATA[programador]]></category>
		<category><![CDATA[PTBYTE]]></category>

		<guid isPermaLink="false">http://www.ptbyte.net/home/?p=36</guid>
		<description><![CDATA[<p>Neste artigo venho falar sobre um conjunto de funções úteis, sobretudo para a exportação de dados, do mais diversos tipos, para um simples formato textual, tipo string.</p>
<p style="text-align: center;"><a href="http://www.ptbyte.net/home/wp-content/uploads/2010/02/phpprogrammersbrain3873.png"><img class="size-full wp-image-175 aligncenter" title="phpprogrammersbrain3873" src="http://www.ptbyte.net/home/wp-content/uploads/2010/02/phpprogrammersbrain3873.png" alt="" width="375" height="300" /></a></p>
<p style="text-align: left;">Imagine que pretende:</p>
<ul>
<li>Guardar um <em>Array </em>na base de dados,</li>
<li>Enviar uma estrutura </li>&#8230; <a href="http://www.ptbyte.net/home/archives/36" class="read_more">Ler o resto.</a></ul>]]></description>
			<content:encoded><![CDATA[<p>Neste artigo venho falar sobre um conjunto de funções úteis, sobretudo para a exportação de dados, do mais diversos tipos, para um simples formato textual, tipo string.</p>
<p style="text-align: center;"><a href="http://www.ptbyte.net/home/wp-content/uploads/2010/02/phpprogrammersbrain3873.png"><img class="size-full wp-image-175 aligncenter" title="phpprogrammersbrain3873" src="http://www.ptbyte.net/home/wp-content/uploads/2010/02/phpprogrammersbrain3873.png" alt="" width="375" height="300" /></a></p>
<p style="text-align: left;">Imagine que pretende:</p>
<ul>
<li>Guardar um <em>Array </em>na base de dados,</li>
<li>Enviar uma estrutura de dados pela rede;</li>
<li>Guardar objectos na base de dados;</li>
<li>Transmitir dados a um outro servidor web ou um <em>Web Service;</em></li>
<li>etc.</li>
</ul>
<p>Como o fazer de forma simples e escalável, de modo a suportar praticamente todo o tipo de dados?</p>
<p><span id="more-36"></span></p>
<p>No PHP existe diversos modos de realizar esta tarefa, muitos deles que provavelmente serão árduos realizar e implementar de raiz no seu sistema.</p>
<p><br class="spacer_" /></p>
<p>Irei falar então de 3 métodos de exportação de dados:</p>
<ul>
</ul>
<ol>
<li><a href="http://php.net/manual/en/function.var-export.php" target="_blank">var_export()</a> / <a href="http://pt2.php.net/manual/en/function.eval.php"><span style="text-decoration: underline;">eval()</span></a></li>
<li><a href="http://pt2.php.net/manual/en/function.serialize.php" target="_blank"><span style="text-decoration: underline;">serialize()</span></a> / <a href="http://pt2.php.net/manual/en/function.unserialize.php" target="_blank">unserialize()</a></li>
<li><a href="http://pt2.php.net/manual/en/function.json-encode.php" target="_blank"><span style="text-decoration: underline;">json_encode()</span></a> / <a href="http://pt2.php.net/manual/en/function.json-decode.php" target="_blank">json_decode</a>()</li>
</ol>
<ul>
</ul>
<p>Todas as funções em cima permitem a exportação  do conteúdo de uma variável, transformando esse mesmo conteúdo numa representação textual que pode ser guardada como uma simples string. Mas no entanto nem todas estas funções operam de mesmo modo.</p>
<p><br class="spacer_" /></p>
<h3><a href="http://php.net/manual/en/function.var-export.php" target="_blank"><span style="text-decoration: underline;">var_export()</span></a> e <a href="http://pt2.php.net/manual/en/function.eval.php"><span style="text-decoration: underline;">eval()</span></a></h3>
<p>O <a href="http://php.net/manual/en/function.var-export.php" target="_blank">var_export </a>permite obter informação estruturada sobre uma variável especifica.  Esta função é semelhante à função <a href="http://www.php.net/manual/en/function.var-dump.php" target="_blank"><span style="text-decoration: underline;">var_dump()</span></a>, mas a diferença está no facto de a representação retornada pela função ser código PHP válido, que pode ser armazenado numa outra variável como string. Como recuperar, perguntam vocês? Para recuperar o conteúdo original e o manipular livremente, basta recorrer à função eval() para interpretar a string obtida anteriormente (lembrem-se que a string era código PHP válido!).</p>
<p>É de notar que esta função <span style="text-decoration: underline;">não</span> consegue exportar correctamente referencias circulares (<em>Arrays</em>, variáveis e objectos organizados em estruturas lógicas circulares). Variáveis do tipo <em>resource </em>também não podem ser exportadas por esta função.</p>
<p>Exemplo básico:</p>
<pre lang="PHP" escape="true">< ?php
$array1 = array('segunda', 'terça', 'quarta', 'quinta', 'sexta', 'sabado', 'domingo');
//exportar
$result = var_export($array1, true);
echo $result;
/* output realizado:
array (   0 => 'segunda',   1 => 'terça',   2 => 'quarta',   3 => 'quinta',
  4 => 'sexta',   5 => 'sabado',   6 => 'domingo', )
*/
//recuperar utilizando eval()
$newArray = '';
eval('$newArray = '.$result . ';');
//a variavel $newArray agora possui o array original.
?></pre>
<p><span style="color: #ff6600;"><strong>Nota importante:</strong></span> Cuidado ao utilizar a função <a href="http://pt2.php.net/manual/en/function.eval.php"><span style="text-decoration: underline;">eval</span></a>, pois esta é capaz de executar qualquer tipo de código PHP, podendo se transformar facilmente num buraco na segurança da sua aplicação ou script, se não verificar o conteúdo da string passada como parâmetro da função e sem possuir absoluta certeza desta provir de locais totalmente confiáveis (exemplo de origens não confiáveis:  as variáveis $_GET, $_POST, $_COOKIE e $_SERVER).</p>
<p><br class="spacer_" /></p>
<h3><a href="http://pt2.php.net/manual/en/function.serialize.php" target="_blank"><span style="text-decoration: underline;">serialize()</span></a> / <a href="http://pt2.php.net/manual/en/function.unserialize.php" target="_blank">unserialize()</a></h3>
<p>O <span style="text-decoration: underline;"><a href="http://pt2.php.net/manual/en/function.serialize.php" target="_blank"><span style="text-decoration: underline;">serialize</span></a></span>, semelhante ao <a href="http://php.net/manual/en/function.var-export.php" target="_blank">var_export</a>, consegue gerar uma representação textual de qualquer variável, seja esta um tipo básico, um array, um objecto ou uma estrutura de dados, inclusive referencias circulares, excepto variáveis do tipo <em>resource </em>e <em>PHP built-in objects.</em></p>
<p>Um exemplo básico utilizando o array $array1 definido no exemplo anterior:</p>
<pre lang="PHP" escape="true">< ?php
//serializar
$result = serialize($array1);
echo $result;
/* output:
a:7:{i:0;s:7:"segunda";i:1;s:5:"terça";i:2;s:6:"quarta";i:3;s:6:"quinta";i:4;s:5:"sexta"
;i:5;s:6:"sabado";i:6;s:7:"domingo";}
*/
//reverter o processo
$arr = unserialize($result);
?></pre>
<p><br class="spacer_" /></p>
<h3><a href="http://pt2.php.net/manual/en/function.json-encode.php" target="_blank"><span style="text-decoration: underline;">json_encode()</span></a> / <a href="http://pt2.php.net/manual/en/function.json-decode.php" target="_blank">json_decode</a>()</h3>
<p>Muito semelhante ao <span style="text-decoration: underline;"><a href="http://pt2.php.net/manual/en/function.serialize.php" target="_blank"><span style="text-decoration: underline;">serialize</span></a></span> (também não consegue exportar variáveis do tipo <em>resource</em>), mas com diferenças menores no modo de conversão dos valores. A função devolve a representação textual do conteúdo de uma variável em formato <a href="http://www.json.org/" target="_blank"><span style="text-decoration: underline;">JSON (JavaScript Object Notation)</span></a>, um formato de intercâmbio popular e independente da linguagem de programação no qual o sistema foi construído, utilizado para a transmissão de dados entre diversas aplicações, serviços e sistemas.</p>
<p>É de notar que existem situações menores que diferenciam esta função do <span style="text-decoration: underline;"><a href="http://pt2.php.net/manual/en/function.serialize.php" target="_blank"><span style="text-decoration: underline;">serialize</span></a></span>, uma delas no facto de arrays com chaves  ( array(&#8216;chave&#8217;=>&#8217;valor&#8217;) ) serem exportados como objectos (e não como arrays), mas facilmente corrigido com um<em> cast</em> para array, ou mesmo com valores incorrectos.</p>
<p>Exemplo básico, utilizando o array $array1 do primeiro exemplo:</p>
<pre lang="PHP" escape="true">< ?php
$result = json_encode($array1);
echo $result;
/* output:
["segunda","terça","quarta","quinta","sexta","sabado","domingo"]
*/
//recuperar
$arr = (array)json_decode($result);
?>
</pre>
<p><br class="spacer_" /></p>
<p>Nota importante sobre <a href="http://pt2.php.net/manual/en/function.json-decode.php" target="_blank">json_decode</a> e<a href="http://pt2.php.net/manual/en/function.json-decode.php" target="_blank"> json_decode</a> de objectos: Ao recuperar um objecto, este é considerado como objecto de StdClass (classe base do php).</p>
<p>Para terminar, uma dica para quem deseja serializar dados para uma base de dados (ou para outro local): transformem a string, recorrendo a função <a href="http://php.net/manual/en/function.base64-encode.php" target="_blank">base64_encode,</a> antes de a concatenar ao comando SQL. De certeza que irá evitar muitas dores de cabeça. Claro que para reverter, bastará utilizar a função <a href="http://php.net/manual/en/function.base64-decode.php" target="_blank">base64_decode</a>;</p>
<p>Deixo um ficheiro com exemplos simples de utilização destas funções e respectivo conteúdo:</p>
<p><strong>Download</strong>: <a href="http://www.ptbyte.net/home/wp-content/uploads/2010/01/exemplo_artigoPHPserializacao1.zip">exemplo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ptbyte.net/home/archives/36/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Land of Kachiri</title>
		<link>http://www.ptbyte.net/home/archives/116</link>
		<comments>http://www.ptbyte.net/home/archives/116#comments</comments>
		<pubDate>Tue, 16 Feb 2010 11:47:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Destaque-Site]]></category>
		<category><![CDATA[Notícias]]></category>
		<category><![CDATA[Programação e Desenvolvimento Web]]></category>
		<category><![CDATA[Projectos]]></category>
		<category><![CDATA[PTBYTE]]></category>
		<category><![CDATA[browser game]]></category>
		<category><![CDATA[jogo online]]></category>
		<category><![CDATA[kachiri]]></category>
		<category><![CDATA[land of kachiri]]></category>
		<category><![CDATA[mmo]]></category>

		<guid isPermaLink="false">http://www.ptbyte.net/home/?p=116</guid>
		<description><![CDATA[<p>Queremos aproveitar o lançamento do novo site do PTBYTE para vos informar do novo projecto que está a ser construído! O site ainda tem muitas etapas pelas quais passar mas até ao momento têm avançado a um bom ritmo! O &#8230; <a href="http://www.ptbyte.net/home/archives/116" class="read_more">Ler o resto.</a></p>]]></description>
			<content:encoded><![CDATA[<p>Queremos aproveitar o lançamento do novo site do PTBYTE para vos informar do novo projecto que está a ser construído! O site ainda tem muitas etapas pelas quais passar mas até ao momento têm avançado a um bom ritmo! O site trata-se de um jogo online do tipo browser game. O nome escolhido do jogo foi &#8220;Land of Kachiri&#8221; e retrata a era medieval! poderão registar-se no jogo durante esta primeira fase de construção podendo assim igualmente nos ajudar na correcção de erros e implementação de novas ideias!</p>
<p><a title="Lando of Kachiri" href="http://testes.ptbyte.net/game/" target="_blank"></a><a href="http://testes.ptbyte.net/game"><img class="aligncenter" title="Land of Kachiri" src="http://testes.ptbyte.net/game/themes/default/images/logo.png" alt="" width="691" height="116" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ptbyte.net/home/archives/116/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

