<?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>Chavão somente &#187; Programação</title>
	<atom:link href="http://www.chavao.net/category/programacao/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.chavao.net</link>
	<description>Tecnologia, Filosofia, Política etc...</description>
	<lastBuildDate>Sun, 05 Sep 2010 03:05:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Adicionar métodos dinamicamente em PHP</title>
		<link>http://www.chavao.net/programacao/adicionar-metodos-dinamicamente-em-php/</link>
		<comments>http://www.chavao.net/programacao/adicionar-metodos-dinamicamente-em-php/#comments</comments>
		<pubDate>Sun, 15 Aug 2010 06:56:35 +0000</pubDate>
		<dc:creator>Chavão</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.chavao.net/?p=621</guid>
		<description><![CDATA[Nunca havia precisado adicionar um método a algum objeto que eu estivesse manipulando, mas essa semana tive que mesclar a um objeto existente um novo método, que só teria aquele método em certo contexto. Eu poderia fazer tudo isso na classe que eu estava querendo adicionar esse método, mas o problema era que eu só [...]]]></description>
			<content:encoded><![CDATA[<p>Nunca havia precisado adicionar um método a algum objeto que eu estivesse manipulando, mas essa semana tive que mesclar a um objeto existente um novo método, que só teria aquele método em certo contexto.</p>
<p>Eu poderia fazer tudo isso na classe que eu estava querendo adicionar esse método, mas o problema era que eu só poderia mexer em outra classe que manipulava essa já existente. Então criei um código que adicionava métodos dinamicamente a essa classe.<span id="more-621"></span></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> addMethod<span class="br0">&#40;</span><span class="re0">$pobj</span>, <span class="re0">$psMethodName</span>, <span class="re0">$psCode</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re0">$sClassName</span> = <a href="http://www.php.net/get_class"><span class="kw3">get_class</span></a><span class="br0">&#40;</span><span class="re0">$pobj</span><span class="br0">&#41;</span>.<span class="st0">&quot;_&quot;</span>.<a href="http://www.php.net/md5"><span class="kw3">md5</span></a><span class="br0">&#40;</span><a href="http://www.php.net/time"><span class="kw3">time</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="re0">$sEval</span> = <span class="st0">&#8216;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&nbsp; &nbsp; if(!class_exists(&#8216;</span>.<span class="re0">$sClassName</span>.<span class="st0">&#8216;)) {</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; class &#8216;</span>.<span class="re0">$sClassName</span>.<span class="st0">&#8216; extends &#8216;</span>.<a href="http://www.php.net/get_class"><span class="kw3">get_class</span></a><span class="br0">&#40;</span><span class="re0">$pobj</span><span class="br0">&#41;</span>.<span class="st0">&#8216; {</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; </span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function __construct() {</span></div>
</li>
<li class="li2">
<div class="de2"><span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parent::__construct();</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; </span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; function &#8216;</span>.<span class="re0">$psMethodName</span>.<span class="st0">&#8216;() {</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &#8216;</span>.<span class="re0">$psCode</span>.<span class="st0">&#8216;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; }</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&nbsp; &nbsp; }</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&nbsp; &nbsp; &#8216;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <a href="http://www.php.net/eval"><span class="kw3">eval</span></a><span class="br0">&#40;</span><span class="re0">$sEval</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">new</span> <span class="re0">$sClassName</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$obj</span> = <span class="kw2">new</span> Classe<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$obj</span> = addMethod<span class="br0">&#40;</span><span class="re0">$obj</span>,<span class="st0">&quot;metodoNovo&quot;</span>,<span class="st0">&quot;echo &#8216;Método novo&#8217;;&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$obj</span>-&gt;<span class="me1">metodoNovo</span><span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="co1">// O resultado será: Método novo</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>O código para adicionar o novo método é bastante simples, vou explicá-lo rapidamente.</p>
<p>Na linha 3 eu crio um nome único para a nova classe. Na linha 6 eu verifico se essa classe já existe. </p>
<p>Na linha 7 eu defino a classe e estendo a classe do objeto que eu quero adicionar o novo método. </p>
<p>No construtor da nova classe eu chamo o construtor da classe do objeto que terá o método adicionado para que ele possa ser refeito, por isso que o addMethod sempre deve ser chamado logo após o objeto ser criado, para que ele não perca nenhuma informação. </p>
<p>Na linha 20 é dado um eval na string do código da classe e em seguida é retornado o objeto da nova classe com todas as funcionalidades do objeto passado por parâmetro e mais o novo método. </p>
<p>Na linha 26 é dado um exemplo de como chamar a função addMethod e quais os seus parâmetros. O primeiro é o objeto corrente, o segundo é o nome do método e o terceiro parâmetro é o código do novo método.</p>
<p>Uma dica importante é para se em alguma parte do código for preciso usar uma verificação de qual é o objeto, deve-se usar instanceof e não o is_a, porque o objeto se transformará em outro com as funcionalidades que ele já possuia.</p>
<h3>Atenção</h3>
<div style="background:#FFFBCF; border: dashed 4px #F00; color: #000; padding: 5px;">
Se você precisou usar esse código provavelmente seu sistema está mal modelado, volte e tente arrumá-lo antes que seja tarde demais.<br />
No meu caso não era nem problema de modelagem, mas sim de teimosia, pois achei que nessa ocasião era a única alternativa a ser usada, mas no próprio diagrama de classe havia a forma correta de se fazer.
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.chavao.net/programacao/adicionar-metodos-dinamicamente-em-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10K Apart &#8211; Criando para a web com menos de 10Kb</title>
		<link>http://www.chavao.net/programacao/10k-apart-criando-para-a-web-com-menos-de-10kb/</link>
		<comments>http://www.chavao.net/programacao/10k-apart-criando-para-a-web-com-menos-de-10kb/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 01:20:23 +0000</pubDate>
		<dc:creator>Chavão</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.chavao.net/?p=606</guid>
		<description><![CDATA[Hoje dando uma olhada no Ajaxianos fiquei sabendo de um concurso chamado 10K Apart que terá suas inscrições até o dia 25 de agosto, cujo requisito principal é ter sua aplicação com menos de 10Kb, isso mesmo, míseros 10 Kilobytes. Mas nem por isso as aplicações deixam de ser poderosas. Entre várias que eu testei [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje dando uma olhada no <a rel="nofollow" target="_blank" href="http://www.ajaxianos.com.br/">Ajaxianos</a> fiquei sabendo de um concurso chamado <a rel="nofollow" target="_blank" href="http://10k.aneventapart.com/">10K Apart</a> que terá suas inscrições até o dia 25 de agosto, cujo requisito principal é ter sua aplicação com menos de 10Kb, isso mesmo, míseros 10 Kilobytes. Mas nem por isso as aplicações deixam de ser poderosas.<span id="more-606"></span></p>
<p><img src="http://www.chavao.net/wp-content/uploads/2010/08/stick.png" alt="Stick figure" title="Stick figure" width="560" height="428" class="aligncenter size-full wp-image-607" /></p>
<p>Entre várias que eu testei a que eu mais gostei foi a <a rel="nofollow" target="_blank" href="http://10k.aneventapart.com/Entry/46">stickfigures</a>, um animador de bonequinhos de palito com somente 9541 bytes, olhando a aplicação sendo executada ninguém julgaria que ela seria tão simples em sua construção.</p>
<p>E como prova do poder da ferramenta (e prova da minha falta do que fazer nessa sexta-feira) eu fiz uma animaçãozinha simples de 79 frames que pode ser vista <a rel="nofollow" target="_blank" href="http://10k.aneventapart.com/Uploads/46/?xles89z4/1yk/c9l/xv3">clicando aqui</a> e <a rel="nofollow" target="_blank" href="http://10k.aneventapart.com/Uploads/46/?qpgi1h4k">aqui</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chavao.net/programacao/10k-apart-criando-para-a-web-com-menos-de-10kb/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Dev Cheat Sheet &#8211; Um canivete suíço dos desenvolvedores</title>
		<link>http://www.chavao.net/programacao/dev-cheat-sheet-um-canivete-suico-dos-desenvolvedores/</link>
		<comments>http://www.chavao.net/programacao/dev-cheat-sheet-um-canivete-suico-dos-desenvolvedores/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 15:00:58 +0000</pubDate>
		<dc:creator>Chavão</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[Documentação]]></category>

		<guid isPermaLink="false">http://www.chavao.net/?p=573</guid>
		<description><![CDATA[Nós que trabalhamos com desenvolvimento corremos atrás de documentação de alguma linguagem, metodologia, ou alguma tecnologia nova que está se mostrando promissora, quase que diariamente. Para isso recorremos sempre ao Google ou diretamente ao site do desenvolvedor, mas se tivéssemos tudo isso organizado em um só lugar? Um agregador de referências para diversos tipos de [...]]]></description>
			<content:encoded><![CDATA[<p>Nós que trabalhamos com desenvolvimento corremos atrás de documentação de alguma linguagem, metodologia, ou alguma tecnologia nova que está se mostrando promissora, quase que diariamente. Para isso recorremos sempre ao Google ou diretamente ao site do desenvolvedor, mas se tivéssemos tudo isso organizado em um só lugar?<span id="more-573"></span> Um agregador de referências para diversos tipos de linguagens, frameworks, sistemas operacionais, softwares e aparentemente tudo que precisamos se encontra organizado no site <a target="_blank" rel="nofollow" href="http://devcheatsheet.com">Dev Cheat Sheet</a>.</p>
<p><img src="http://www.chavao.net/wp-content/uploads/2010/08/cmaismais.png" alt="Dev Cheat Sheet - C++" title="Dev Cheat Sheet - C++" width="560" height="288" class="aligncenter size-full wp-image-575" /></p>
<p>O site agrupa informações referentes a: Linguagens de programação, linguagens de marcação, query languages, libraries e frameworks, sistemas operacionais, controles de versionamento, servidores, bancos de dados, ORMs, CMSs, sites, editores de texto, aplicações, segurança, redes, matemática, metodologias e outras coisas não aplicadas nas categorias antes citadas.</p>
<p>Eu particularmente gostei muito do site, pode servir como boa referência para consultas no dia-a-dia de trabalho.</p>
<p><img src="http://www.chavao.net/wp-content/uploads/2010/08/devcheatsheet.png" alt="Dev Cheat Sheet - Categorias" title="Dev Cheat Sheet - Categorias" width="560" height="389" class="aligncenter size-full wp-image-576" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chavao.net/programacao/dev-cheat-sheet-um-canivete-suico-dos-desenvolvedores/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conversor de bookmark de Delicious para Google Chrome</title>
		<link>http://www.chavao.net/programacao/conversor-de-bookmark-de-delicious-para-google-chrom/</link>
		<comments>http://www.chavao.net/programacao/conversor-de-bookmark-de-delicious-para-google-chrom/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 21:31:26 +0000</pubDate>
		<dc:creator>Chavão</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.chavao.net/?p=172</guid>
		<description><![CDATA[Como eu comecei a usar o Google Chrome de um tempo pra cá, notei a falta de um plugin que funcionasse 100% integrado ao Delicious para que eu pudesse usar meus marcadores onlines sem ter que abrir o site toda hora. O que eu resolvi fazer foi um conversor dos arquivos de exportação do Delicious [...]]]></description>
			<content:encoded><![CDATA[<p>Como eu comecei a usar o Google Chrome de um tempo pra cá, notei a falta de um plugin que funcionasse 100% integrado ao Delicious para que eu pudesse usar meus marcadores onlines sem ter que abrir o site toda hora. O que eu resolvi fazer foi um conversor dos arquivos de exportação do Delicious para o arquivo de importação do Google Chrome.<span id="more-172"></span></p>
<p>O código não ficou a melhor coisa do mundo, porque eu não pensei na melhor forma de fazê-lo, eu simplesmente fui vendo como ia ficando a saída e modificando conforme fosse preciso, então segue o código em PHP que faz o trabalho de conversão:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/header"><span class="kw3">header</span></a><span class="br0">&#40;</span><span class="st0">&#8216;Content-Type: text/html; charset=utf-8&#8242;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/header"><span class="kw3">header</span></a><span class="br0">&#40;</span><span class="st0">&#8216;Content-type: text/xml&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/header"><span class="kw3">header</span></a><span class="br0">&#40;</span><span class="st0">&#8216;Content-Disposition: attachment; filename=&quot;bookmark_delicious_2_chrome.xml&quot;&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$linhas</span> = <a href="http://www.php.net/file"><span class="kw3">file</span></a><span class="br0">&#40;</span><span class="st0">&quot;delicious.html&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$arrHTML</span> = <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$linhas</span> <span class="kw1">as</span> <span class="re0">$linha</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><a href="http://www.php.net/preg_match"><span class="kw3">preg_match</span></a><span class="br0">&#40;</span><span class="st0">&quot;/(.*)<span class="es0">\<</span>DT<span class="es0">\></span>(.*)/i&quot;</span>,<span class="re0">$linha</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$tag_name</span> = <a href="http://www.php.net/reset"><span class="kw3">reset</span></a><span class="br0">&#40;</span><a href="http://www.php.net/explode"><span class="kw3">explode</span></a><span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\&quot;</span>&quot;</span>,<a href="http://www.php.net/end"><span class="kw3">end</span></a><span class="br0">&#40;</span><a href="http://www.php.net/explode"><span class="kw3">explode</span></a><span class="br0">&#40;</span><span class="st0">&quot;TAGS=<span class="es0">\&quot;</span>&quot;</span>,<span class="re0">$linha</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">$tag_name</span>==<span class="st0">&quot;&quot;</span><span class="br0">&#41;</span> <span class="re0">$tag_name</span> = <span class="st0">&quot;Untagged&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$arrTags</span> = <a href="http://www.php.net/explode"><span class="kw3">explode</span></a><span class="br0">&#40;</span><span class="st0">&quot;,&quot;</span>,<span class="re0">$tag_name</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$linha</span> = <a href="http://www.php.net/str_replace"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span><span class="st0">&quot;&lt;DL&gt;&lt;p&gt;&quot;</span>,<span class="st0">&quot;&quot;</span>,<span class="re0">$linha</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$linha</span> = <a href="http://www.php.net/preg_replace"><span class="kw3">preg_replace</span></a><span class="br0">&#40;</span><span class="st0">&quot;/(TAGS=<span class="es0">\&quot;</span>.*<span class="es0">\&quot;</span>)/&quot;</span>,<span class="st0">&quot;&quot;</span>,<span class="re0">$linha</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$linha</span> = <a href="http://www.php.net/preg_replace"><span class="kw3">preg_replace</span></a><span class="br0">&#40;</span><span class="st0">&quot;/(ADD_DATE=<span class="es0">\&quot;</span>.*<span class="es0">\&quot;</span>)/&quot;</span>,<span class="st0">&quot;ADD_DATE=<span class="es0">\&quot;</span><span class="es0">\&quot;</span> LAST_VISIT=<span class="es0">\&quot;</span><span class="es0">\&quot;</span> LAST_MODIFIED=<span class="es0">\&quot;</span><span class="es0">\&quot;</span>&quot;</span>,<span class="re0">$linha</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$arrTags</span> <span class="kw1">as</span> <span class="re0">$tag_name</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>!<a href="http://www.php.net/isset"><span class="kw3">isset</span></a><span class="br0">&#40;</span><span class="re0">$arrHTML</span><span class="br0">&#91;</span><span class="re0">$tag_name</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="re0">$arrHTML</span><span class="br0">&#91;</span><span class="re0">$tag_name</span><span class="br0">&#93;</span> = <span class="st0">&quot;&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$arrHTML</span><span class="br0">&#91;</span><span class="re0">$tag_name</span><span class="br0">&#93;</span> .= <span class="re0">$linha</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;&lt;!DOCTYPE NETSCAPE-Bookmark-file-1&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&lt;META HTTP-EQUIV=<span class="es0">\&quot;</span>Content-Type<span class="es0">\&quot;</span> CONTENT=<span class="es0">\&quot;</span>text/html; charset=UTF-8<span class="es0">\&quot;</span>&gt;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="st0">&lt;TITLE&gt;Bookmarks&lt;/TITLE&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&lt;H1&gt;Bookmarks&lt;/H1&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0"><span class="es0">\t</span>&lt;DL&gt;&lt;p&gt;<span class="es0">\n</span>&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$arrHTML</span> <span class="kw1">as</span> <span class="re0">$k</span> =&gt; <span class="re0">$v</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;<span class="es0">\t</span><span class="es0">\t</span>&lt;DT&gt;&lt;H3 ADD_DATE=<span class="es0">\&quot;</span><span class="es0">\&quot;</span>&gt;&quot;</span>.<span class="re0">$k</span>.<span class="st0">&quot;&lt;/H3&gt;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="es0">\t</span><span class="es0">\t</span>&lt;DL&gt;&lt;p&gt;<span class="es0">\n</span><span class="es0">\t</span><span class="es0">\t</span><span class="es0">\t</span>&quot;</span>.<span class="re0">$v</span>.<span class="st0">&quot;<span class="es0">\t</span><span class="es0">\t</span><span class="es0">\n</span>&lt;/DL&gt;&lt;p&gt;<span class="es0">\n</span>&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="st0">&quot;<span class="es0">\t</span>&lt;/DL&gt;&lt;p&gt;&quot;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Onde na sétima linha de código entra o nome do arquivo que foi exportado do Delicious e que deve estar no mesmo diretório desse arquivo PHP (ou em diretório separado, mas no mesmo diretório fica mais fácil).</p>
<p>Após rodar o script o arquivo de importação do Google Chrome será oferecido para download, bastando salvar e então efetuar o processo de importação no Gerenciador de Favoritos que todos os marcadores do Delicious estarão no seu navegador separados por pastas de acordo com as categorias escolhidas no site. E poderá usar a sincronização de favoritos para mantê-los sempre online! ^^</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chavao.net/programacao/conversor-de-bookmark-de-delicious-para-google-chrom/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Meu PHP Template Manager</title>
		<link>http://www.chavao.net/programacao/meu-php-template-manager/</link>
		<comments>http://www.chavao.net/programacao/meu-php-template-manager/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 08:25:12 +0000</pubDate>
		<dc:creator>Chavão</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.chavao.net/blog/?p=86</guid>
		<description><![CDATA[Olá pessoal, faz tempo que não escrevo nesse blog! Hoje a tarde pensei em postar uma mensagem de despedida e encerramento, mas como eu havia dormido tarde na noite anterior e acordado cedo eu acabei pegando no sono a tarde e estou aqui agora de madrugada acordadão e sem sono. Então aproveitando esse momento silencioso [...]]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal, faz tempo que não escrevo nesse blog! Hoje a tarde pensei em postar uma mensagem de despedida e encerramento, mas como eu havia dormido tarde na noite anterior e acordado cedo eu acabei pegando no sono a tarde e estou aqui agora de madrugada acordadão e sem sono.</p>
<p>Então aproveitando esse momento silencioso aqui em casa eu resolvi brincar um pouco com PHP, comecei a fazer um template manager, porque o que mais me deixa enojado do meu código é quando tenho que misturar HTML com PHP, aí fica aquela zona.<span id="more-86"></span></p>
<p>Então vamos ao código&#8230; Esse é um código de exemplo de como fica a parte PHP usando o meu Template Manager:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">include</span> <span class="st0">&#8216;CTemplate.php&#8217;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$objT</span> = <span class="kw2">new</span> CTemplate<span class="br0">&#40;</span><span class="st0">&#8216;new.html&#8217;</span>,<span class="st0">&#8216;templates&#8217;</span><span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$linha</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> = <span class="st0">&quot;Zero&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$linha</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> = <span class="st0">&quot;One&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$linha</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span> = <span class="st0">&quot;Two&quot;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$linha</span><span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span> = <span class="st0">&quot;Three&quot;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$teste</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> = <span class="st0">&quot;1&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$teste</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> = <span class="st0">&quot;2&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$teste</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span> = <span class="st0">&quot;3&quot;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$teste</span><span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span> = <span class="st0">&quot;4&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$teste</span><span class="br0">&#91;</span><span class="nu0">4</span><span class="br0">&#93;</span> = <span class="st0">&quot;5&quot;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$objT</span>-&gt;<span class="me1">assign</span><span class="br0">&#40;</span><span class="st0">&#8216;title&#8217;</span>,<span class="st0">&#8216;Test page&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$objT</span>-&gt;<span class="me1">assign</span><span class="br0">&#40;</span><span class="st0">&#8216;variavel_teste&#8217;</span>,<span class="st0">&quot;New value to be placed at variavel_teste&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2"><span class="re0">$objT</span>-&gt;<span class="me1">assign</span><span class="br0">&#40;</span><span class="st0">&#8216;linha&#8217;</span>,<span class="re0">$linha</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$objT</span>-&gt;<span class="me1">assign</span><span class="br0">&#40;</span><span class="st0">&#8216;teste&#8217;</span>,<span class="re0">$teste</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$objT</span>-&gt;<span class="me1">display</span><span class="br0">&#40;</span><span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>Agora o HTML para ser manipulado:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt;html&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;head&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;title&gt;{title}&lt;/title&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/head&gt;
</div>
</li>
<li class="li2">
<div class="de2">&lt;body&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; {variavel_teste}
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;br/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;br/&gt;
</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; == {linha} ==&lt;br/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;ul&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;li&gt;{teste}&lt;/li&gt;
</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &lt;/ul&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;br/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;ol&gt;
</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &lt;li&gt;{teste}&lt;/li&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;/ol&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/body&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/html&gt;</div>
</li>
</ol>
</div>
<p>E o HTML resultante da renderização com o Template Manager:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&lt;html&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;head&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;title&gt;Test page&lt;/title&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/head&gt;
</div>
</li>
<li class="li2">
<div class="de2">&lt;body&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; New value to be placed at variavel_teste
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;br/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;br/&gt;
</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; == Zero ==&lt;br/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; == One ==&lt;br/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; == Two ==&lt;br/&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; == Three ==&lt;br/&gt;
</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;ul&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;li&gt;1&lt;/li&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;li&gt;2&lt;/li&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;li&gt;3&lt;/li&gt;
</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &lt;li&gt;4&lt;/li&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;li&gt;5&lt;/li&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;/ul&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;br/&gt;
</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;ol&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;li&gt;1&lt;/li&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;li&gt;2&lt;/li&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;li&gt;3&lt;/li&gt;
</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &lt;li&gt;4&lt;/li&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &lt;li&gt;5&lt;/li&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;/ol&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/body&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/html&gt;</div>
</li>
</ol>
</div>
<p>Existem duas formas de iniciar o Objeto Template:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$objT</span> = <span class="kw2">new</span> CTemplate<span class="br0">&#40;</span><span class="st0">&#8216;new.html&#8217;</span>,<span class="st0">&#8216;templates&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>ou</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="re0">$objT</span> = <span class="kw2">new</span> CTemplate<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$objT</span>-&gt;<span class="me1">setPath</span><span class="br0">&#40;</span><span class="st0">&#8216;templates&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="re0">$objT</span>-&gt;<span class="me1">setTemplate</span><span class="br0">&#40;</span><span class="st0">&#8216;new.html&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
</ol>
</div>
<p>A forma de codificar foi inspirada no Smarty Template, o primeiro Template Manager que eu usei. A classe do template manager foi batizado de &#8220;Chavão Template Manager&#8221; (que nome mais óbvio) e poder ser vista a seguir:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">&lt;?php</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">class</span> CTemplate <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> <span class="re0">$sHtml</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <a href="http://www.php.net/static"><span class="kw3">static</span></a> <span class="re0">$sPath</span>; </div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">function</span> __construct<span class="br0">&#40;</span><span class="re0">$psHtml</span>=<span class="kw2">null</span>,<span class="re0">$psPath</span>=<span class="kw2">null</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>!<a href="http://www.php.net/is_null"><span class="kw3">is_null</span></a><span class="br0">&#40;</span><span class="re0">$psPath</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self::<span class="re0">$sPath</span> = <span class="br0">&#40;</span><a href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$psPath</span>,<span class="nu0">-1</span><span class="br0">&#41;</span>==<span class="st0">&quot;/&quot;</span><span class="br0">&#41;</span> ? <span class="re0">$psPath</span> : <span class="re0">$psPath</span>.<span class="st0">&quot;/&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>!<a href="http://www.php.net/is_null"><span class="kw3">is_null</span></a><span class="br0">&#40;</span><span class="re0">$psHtml</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/ob_start"><span class="kw3">ob_start</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><a href="http://www.php.net/is_file"><span class="kw3">is_file</span></a><span class="br0">&#40;</span>self::<span class="re0">$sPath</span>.<span class="re0">$psHtml</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">include</span> self::<span class="re0">$sPath</span>.<span class="re0">$psHtml</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">sHtml</span> = <a href="http://www.php.net/ob_get_contents"><span class="kw3">ob_get_contents</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/ob_clean"><span class="kw3">ob_clean</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw2">function</span> setPath<span class="br0">&#40;</span><span class="re0">$psPath</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>!<a href="http://www.php.net/is_null"><span class="kw3">is_null</span></a><span class="br0">&#40;</span><span class="re0">$psPath</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self::<span class="re0">$sPath</span> = <span class="br0">&#40;</span><a href="http://www.php.net/substr"><span class="kw3">substr</span></a><span class="br0">&#40;</span><span class="re0">$psPath</span>,<span class="nu0">-1</span><span class="br0">&#41;</span>==<span class="st0">&quot;/&quot;</span><span class="br0">&#41;</span> ? <span class="re0">$psPath</span> : <span class="re0">$psPath</span>.<span class="st0">&quot;/&quot;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">function</span> setTemplate<span class="br0">&#40;</span><span class="re0">$psHtml</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/ob_start"><span class="kw3">ob_start</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><a href="http://www.php.net/is_file"><span class="kw3">is_file</span></a><span class="br0">&#40;</span>self::<span class="re0">$sPath</span>.<span class="re0">$psHtml</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">include</span> self::<span class="re0">$sPath</span>.<span class="re0">$psHtml</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">sHtml</span> = <a href="http://www.php.net/ob_get_contents"><span class="kw3">ob_get_contents</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/ob_clean"><span class="kw3">ob_clean</span></a><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">function</span> assign<span class="br0">&#40;</span><span class="re0">$pTarget</span>,<span class="re0">$psValue</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">arrTarget</span><span class="br0">&#91;</span><span class="re0">$pTarget</span><span class="br0">&#93;</span> = <span class="re0">$psValue</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">function</span> display<span class="br0">&#40;</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$this</span>-&gt;<span class="me1">arrTarget</span> <span class="kw1">as</span> <span class="re0">$sTarget</span> =&gt; <span class="re0">$sValue</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>!<a href="http://www.php.net/is_array"><span class="kw3">is_array</span></a><span class="br0">&#40;</span><span class="re0">$sValue</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">sHtml</span> = <a href="http://www.php.net/str_replace"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span><span class="st0">&quot;{&quot;</span>.<span class="re0">$sTarget</span>.<span class="st0">&quot;}&quot;</span>,<span class="re0">$sValue</span>,<span class="re0">$this</span>-&gt;<span class="me1">sHtml</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/unset"><span class="kw3">unset</span></a><span class="br0">&#40;</span><span class="re0">$this</span>-&gt;<span class="me1">arrTarget</span><span class="br0">&#91;</span><span class="re0">$sTarget</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$arrHtml</span> = <a href="http://www.php.net/explode"><span class="kw3">explode</span></a><span class="br0">&#40;</span><span class="st0">&quot;<span class="es0">\n</span>&quot;</span>,<span class="re0">$this</span>-&gt;<span class="me1">sHtml</span><span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$arrHtml</span> <span class="kw1">as</span> <span class="re0">$iLine</span> =&gt; <span class="re0">$sHtml</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$this</span>-&gt;<span class="me1">arrTarget</span> <span class="kw1">as</span> <span class="re0">$sTarget</span> =&gt; <span class="re0">$arrValue</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><a href="http://www.php.net/is_array"><span class="kw3">is_array</span></a><span class="br0">&#40;</span><span class="re0">$arrValue</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">foreach</span><span class="br0">&#40;</span><span class="re0">$arrValue</span> <span class="kw1">as</span> <span class="re0">$sValue</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><a href="http://www.php.net/preg_match"><span class="kw3">preg_match</span></a><span class="br0">&#40;</span><span class="st0">&#8216;/<span class="es0">\{</span>&#8216;</span> . <span class="re0">$sTarget</span> . <span class="st0">&#8216;<span class="es0">\}</span>/i&#8217;</span>,<span class="re0">$sHtml</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$sReturn</span> .= <a href="http://www.php.net/str_replace"><span class="kw3">str_replace</span></a><span class="br0">&#40;</span><span class="st0">&quot;{&quot;</span>.<span class="re0">$sTarget</span>.<span class="st0">&quot;}&quot;</span>,<span class="re0">$sValue</span>,<span class="re0">$sHtml</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$arrHtml</span><span class="br0">&#91;</span><span class="re0">$iLine</span><span class="br0">&#93;</span> = <span class="re0">$sReturn</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/unset"><span class="kw3">unset</span></a><span class="br0">&#40;</span><span class="re0">$sReturn</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span>-&gt;<span class="me1">sHtml</span> = <a href="http://www.php.net/implode"><span class="kw3">implode</span></a><span class="br0">&#40;</span><span class="st0">&quot;&quot;</span>,<span class="re0">$arrHtml</span><span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/echo"><span class="kw3">echo</span></a> <span class="re0">$this</span>-&gt;<span class="me1">sHtml</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">?&gt;</span></div>
</li>
</ol>
</div>
<p>O &#8220;Chavão Template Manager&#8221; comentado e os arquivos de exemplo podem ser baixados <a href="http://www.phpclasses.org/browse/package/5952.html">clicando aqui</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.chavao.net/programacao/meu-php-template-manager/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Resolução de sistemas lineares por decomposição LU</title>
		<link>http://www.chavao.net/programacao/resolucao-de-sistemas-lineares-por-decomposicao-lu/</link>
		<comments>http://www.chavao.net/programacao/resolucao-de-sistemas-lineares-por-decomposicao-lu/#comments</comments>
		<pubDate>Sun, 15 Jun 2008 02:01:11 +0000</pubDate>
		<dc:creator>Chavão</dc:creator>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[C/C++]]></category>

		<guid isPermaLink="false">http://chavao.wordpress.com/?p=27</guid>
		<description><![CDATA[Um amigo meu que faz Física na UFF tava precisando desse programinha pra aula de Calculo Numérico dele, como ele já tinha alguma coisa pronta em português estruturado eu dei uma forcinha pra passar pra C. Ficamos das 14:30 até as 20:40 fazendo isso, quem quiser/precisar pode baixar o arquivo na linguagem C download [OFF] [...]]]></description>
			<content:encoded><![CDATA[<p>Um amigo meu que faz Física na UFF tava precisando desse programinha pra aula de Calculo Numérico dele, como ele já tinha alguma coisa pronta em português estruturado eu dei uma forcinha pra passar pra C.</p>
<p>Ficamos das 14:30 até as 20:40 fazendo isso, quem quiser/precisar pode baixar o arquivo na linguagem C <a href="http://diegochavao.googlepages.com/decomp_lu.c">download</a></p>
<hr />[<strong>OFF</strong>] Anteontem Sexta-feira 13 e nenhum filme de terror em nenhum canal.</p>
<p>Revoltante! Televisão já não presta pra mais nada há algum tempo, acho que foi ano passado que em uma sexta-feira 13 passou Débi e Loide.</p>
<p>Com a volta do Cinema em Casa eu confesso que comemorei como uma criança, doce ilusão de que iriam passar os clássicos filmes de terror.</p>
<p>Merda, pra piorar ontem fiquei o dia todo sem mexer no computador.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.chavao.net/programacao/resolucao-de-sistemas-lineares-por-decomposicao-lu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
