<?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>Diego Henrique &#187; PHP</title>
	<atom:link href="http://www.diegoholiveira.com/blog/category/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.diegoholiveira.com/blog</link>
	<description></description>
	<lastBuildDate>Fri, 08 Jan 2010 11:53:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Publicando um projeto desenvolvido em ZF em um shared host</title>
		<link>http://www.diegoholiveira.com/blog/2010/01/08/publicando-um-projeto-desenvolvido-em-zf-em-um-shared-host/</link>
		<comments>http://www.diegoholiveira.com/blog/2010/01/08/publicando-um-projeto-desenvolvido-em-zf-em-um-shared-host/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 11:45:01 +0000</pubDate>
		<dc:creator>Diego Henrique</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[apache]]></category>

		<guid isPermaLink="false">http://www.diegoholiveira.com/blog/?p=179</guid>
		<description><![CDATA[Para a grande maioria que utiliza um shared host, publicar um projeto desenvolvido com Zend Framework pode ser uma dor de cabeça, pois a estrutura recomendada de diretórios pede que a pasta da sua aplicação e do framework fiquem um nivel abaixo do nivel da pasta publica (wwwroot ou public), e muitos shared hosts não [...]]]></description>
			<content:encoded><![CDATA[<p>Para a grande maioria que utiliza um shared host, publicar um projeto desenvolvido com Zend Framework pode ser uma dor de cabeça, pois a estrutura recomendada de diretórios pede que a pasta da sua aplicação e do framework fiquem um nivel abaixo do nivel da pasta publica (wwwroot ou public), e muitos shared hosts não permitem que você faça isso.</p>
<p>Uma das formas de resolver este problema sem mudar toda a estrutura recomendada pelo ZF é colocar toda a estrutura da forma como é gerada pelo Zend Tool (ou criada manualmente) no diretório raiz do servidor web e usar um .htaccess para redirecionar todas as requisições para o ZF de forma correta. O .htaccess ficaria assim:</p>
<div class="codesnip-container" >RewriteEngine on<br />
RewriteRule    ^$ public/    [L]<br />
RewriteRule    (.*) public/$1 [L]</div>
<p>Estas regras simplesmente direcionam todas as requisições da raiz do seu diretório web para o diretório public que contem o index.php que inicializa a aplicação. Solução simples e que funciona muito bem.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diegoholiveira.com/blog/2010/01/08/publicando-um-projeto-desenvolvido-em-zf-em-um-shared-host/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Checando a conexão com a internet usando PHP</title>
		<link>http://www.diegoholiveira.com/blog/2009/09/23/checando-a-conexao-com-a-internet-usando-php/</link>
		<comments>http://www.diegoholiveira.com/blog/2009/09/23/checando-a-conexao-com-a-internet-usando-php/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 15:28:24 +0000</pubDate>
		<dc:creator>Diego Henrique</dc:creator>
				<category><![CDATA[Dicas]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.diegoholiveira.com/blog/?p=161</guid>
		<description><![CDATA[Durante o desenvolvimento de um projeto de uso interno de um cliente, precisei verificar se existia conectividade com a internet pra sincronizar e atualizar dados. A maneira mais rapida que eu encontrei pra isso foi o trecho abaixo: $isConnected = &#40; fsockopen&#40;&#34;www.google.com&#34;, 80&#41; ? true : false &#41;;]]></description>
			<content:encoded><![CDATA[<p>Durante o desenvolvimento de um projeto de uso interno de um cliente, precisei verificar se existia conectividade com a internet pra sincronizar e atualizar dados. A maneira mais rapida que eu encontrei pra isso foi o trecho abaixo:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="re0">$isConnected</span> <span class="sy0">=</span> <span class="br0">&#40;</span> <a href="http://www.php.net/fsockopen"><span class="kw3">fsockopen</span></a><span class="br0">&#40;</span><span class="st0">&quot;www.google.com&quot;</span><span class="sy0">,</span> 80<span class="br0">&#41;</span> ? <span class="kw4">true</span> <span class="sy0">:</span> <span class="kw4">false</span> <span class="br0">&#41;</span><span class="sy0">;</span></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.diegoholiveira.com/blog/2009/09/23/checando-a-conexao-com-a-internet-usando-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usando o Ez Components com o Zend Framework</title>
		<link>http://www.diegoholiveira.com/blog/2009/08/10/usando-o-ez-components-com-o-zend-framework/</link>
		<comments>http://www.diegoholiveira.com/blog/2009/08/10/usando-o-ez-components-com-o-zend-framework/#comments</comments>
		<pubDate>Tue, 11 Aug 2009 01:48:55 +0000</pubDate>
		<dc:creator>Diego Henrique</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Ez Components]]></category>

		<guid isPermaLink="false">http://www.diegoholiveira.com/blog/?p=157</guid>
		<description><![CDATA[Nenhum framework é perfeito, todos sabemos disso, e exatamente por isso em alguns casos torna-se necessario juntar peças de um e de outro pra poder obter um bom resultado. Em busca de um bom componente pra trabalhar com geração de graficos acabei encontrando o framework / biblioteca Ez Components, pra quem não conheçe eu recomendo [...]]]></description>
			<content:encoded><![CDATA[<p>Nenhum framework é perfeito, todos sabemos disso, e exatamente por isso em alguns casos torna-se necessario juntar peças de um e de outro pra poder obter um bom resultado.<br />
Em busca de um bom componente pra trabalhar com geração de graficos acabei encontrando o framework / biblioteca Ez Components, pra quem não conheçe eu recomendo muito dar uma olhada: <a href="http://ezcomponents.org">http://ezcomponents.org</a>. No Ez temos uma otima biblioteca de graficos, e decidi por fim a usa-la no meu projeto.</p>
<p>Para integra-la com o Zend Framework é muito simples, visto que o ZF facilita muito as coisas. Depois de ter feito o download copie a pasta do Ez Componentes para pasta library da sua aplicação.<br />
Após isso abra o arquivo de inicialização da sua aplicação, como eu estou usando o ZF 1.8 meu arquivo chama-se Bootstrap.php, porem se você tiver usando o Zf 1.7 ou anterior a ideia é a mesma.</p>
<p>No meu bootstrap eu já tinha um metodo de inicialização pro autoloader, chamado _initAutoloader, que configura o autoload padrão do ZF, neste mesmo incrementei o autoload do Ez Componentes, ficando assim:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">protected <span class="kw2">function</span> _initAutoloader<span class="br0">&#40;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Autoloader dos recursos padrões</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$autoloader</span> <span class="sy0">=</span> <span class="kw2">new</span> Zend_Application_Module_Autoloader<span class="br0">&#40;</span><a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;namespace&#8217;</span> &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">&#8221;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;basePath&#8217;</span>&nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> APPLICATION_PATH<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">// Configurando o autoloader do EzComponents</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">require_once</span> <span class="st_h">&#8216;ezc/Base/src/base.php&#8217;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$loader</span> <span class="sy0">=</span> Zend_Loader_Autoloader<span class="sy0">::</span><span class="me2">getInstance</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$loader</span><span class="sy0">-&gt;</span><span class="me1">pushAutoloader</span><span class="br0">&#40;</span><a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st_h">&#8216;ezcBase&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8216;autoload&#8217;</span><span class="br0">&#41;</span><span class="sy0">,</span> <span class="st_h">&#8216;ezc&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
</div>
<p>O que  metodo pushAutoloader faz é registrar o metodo estatico autoload da classe ezcBase como autoloader padrão para as classes que inicial com ezc, e isso é feito usando a função spl_autoload_register() da SPL.</p>
<p>Prontinho. Agora é só usar o Ez Components a vontade.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diegoholiveira.com/blog/2009/08/10/usando-o-ez-components-com-o-zend-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Validando formulários com Zend Form, jQuery e Ajax.</title>
		<link>http://www.diegoholiveira.com/blog/2009/05/21/validando-formularios-com-zend-form-jquery-e-ajax/</link>
		<comments>http://www.diegoholiveira.com/blog/2009/05/21/validando-formularios-com-zend-form-jquery-e-ajax/#comments</comments>
		<pubDate>Fri, 22 May 2009 02:44:53 +0000</pubDate>
		<dc:creator>Diego Henrique</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.diegoholiveira.com/blog/?p=149</guid>
		<description><![CDATA[Sabemos que validar formulários hoje em dia é uma obrigação de todo bom desenvolvedor. E não validar apenas no cliente usando javascript, mas validar também no servidor. Validação é o primeiro de muitos passos para tornar sua aplicação mais segura. Uma técnica que eu acabei descobrindo recentemente e estou usando bastante é juntar o poder [...]]]></description>
			<content:encoded><![CDATA[<p>Sabemos que validar formulários hoje em dia é uma obrigação de todo bom desenvolvedor. E não validar apenas no cliente usando javascript, mas validar também no servidor. Validação é o primeiro de muitos passos para tornar sua aplicação mais segura.</p>
<p>Uma técnica que eu acabei descobrindo recentemente e estou usando bastante é juntar o poder do componente Zend_Form com o beleza do jQuery, o que me trouxe resultados muito bons, principalmente nos quesitos qualidade e desenvolvimento ágil.</p>
<p>Para demostrar essa técnica que eu estou utilizando eu vou partir do pressuposto que você já esta familiarizado com o ambiente do Zend Framework. Partindo disso, vou mostrar o código simples do formulário de cadastro:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="kw2">&lt;?php</span></p>
<p><span class="kw2">class</span> Cadastro_Form <span class="kw2">extends</span> Zend_Form <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> init<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">setAttrib</span><span class="br0">&#40;</span><span class="st_h">&#8216;id&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8216;cadastro&#8217;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">-&gt;</span><span class="me1">setAction</span><span class="br0">&#40;</span><span class="st_h">&#8216;/index/index&#8217;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="sy0">-&gt;</span><span class="me1">setMethod</span><span class="br0">&#40;</span><span class="st_h">&#8216;post&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">addElement</span><span class="br0">&#40;</span> <span class="st_h">&#8216;text&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8216;nome&#8217;</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;label&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">&#8216;Nome&#8217;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;required&#8217;</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="kw4">true</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;validators&#8217;</span>&nbsp; &nbsp; <span class="sy0">=&gt;</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;NotEmpty&#8217;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st_h">&#8216;StringLength&#8217;</span><span class="sy0">,</span> <span class="kw4">false</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span>0<span class="sy0">,</span> 60<span class="br0">&#41;</span> <span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">addElement</span><span class="br0">&#40;</span><span class="st_h">&#8216;text&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8216;email&#8217;</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;label&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">&#8216;E-mail&#8217;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;required&#8217;</span> &nbsp; &nbsp; &nbsp;<span class="sy0">=&gt;</span> <span class="kw4">true</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;validators&#8217;</span> &nbsp; <span class="sy0">=&gt;</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;NotEmpty&#8217;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;EmailAddress&#8217;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">addElement</span><span class="br0">&#40;</span> <span class="st_h">&#8216;submit&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8216;submit&#8217;</span><span class="sy0">,</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;ignore&#8217;</span>&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="kw4">true</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="st_h">&#8216;label&#8217;</span> &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=&gt;</span> <span class="st_h">&#8216;Entrar&#8217;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">getElement</span><span class="br0">&#40;</span><span class="st_h">&#8216;submit&#8217;</span><span class="br0">&#41;</span><span class="sy0">-&gt;</span><span class="me1">removeDecorator</span><span class="br0">&#40;</span><span class="st_h">&#8216;label&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div>
</div>
<p>Agora que nosso formulário de cadastro já é um componente do projeto, vamos fazer as paginas, vou supor aqui que estamos trabalhando no controller index, portando criaremos duas actions para que nosso controller aqui fique da seguinte maneira:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="kw2">class</span> IndexController <span class="kw2">extends</span> Zend_Controller_Action <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co4">/** Nesta action iremos exibir o formulario */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> indexAction<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="co4">/** Nesta action iremos receber o dados por ajax para validação */</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> validarAction<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div>
</div>
<p>Temos o básico para começarmos a trabalhar. Agora a ideia é validarmos estes dados na tela do cliente via ajax, para que antes do cliente submeter os dados ele consiga visualizar os possíveis erros e já corrigi-los. Lembrando também que isso NÃO descarta a validação no servidor.</p>
<p>Vamos ver como fica nosso metodo indexAction():</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="kw2">public</span> <span class="kw2">function</span> indexAction<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$form</span> <span class="sy0">=</span> <span class="kw2">new</span> Cadastro_Form<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span>_request<span class="sy0">-&gt;</span><span class="me1">isPost</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$form</span><span class="sy0">-&gt;</span><span class="me1">isValid</span><span class="br0">&#40;</span> <span class="re0">$this</span><span class="sy0">-&gt;</span>_request<span class="sy0">-&gt;</span><span class="me1">getPost</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">view</span><span class="sy0">-&gt;</span><span class="me1">mensagem</span> <span class="sy0">=</span> <span class="st_h">&#8216;Formulario valido&#8217;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">view</span><span class="sy0">-&gt;</span><span class="me1">mensagem</span> <span class="sy0">=</span> <span class="st_h">&#8216;Ops. Formulario invalido.&#8217;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$form</span><span class="sy0">-&gt;</span><span class="me1">populate</span><span class="br0">&#40;</span> <span class="re0">$this</span><span class="sy0">-&gt;</span>_request<span class="sy0">-&gt;</span><span class="me1">getPost</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">view</span><span class="sy0">-&gt;</span><span class="me1">form</span> <span class="sy0">=</span> <span class="re0">$form</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span></div>
</div>
<p>E agora nossa index.phtml</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="kw2">&lt;?php</span> <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">$this</span><span class="sy0">-&gt;</span><span class="me1">mensagem</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="sy1">?&gt;</span><br />
&lt;p&gt;<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">mensagem</span><span class="sy0">;</span> <span class="sy1">?&gt;</span>&lt;/p&gt;<br />
<span class="kw2">&lt;?php</span> <span class="kw1">echo</span> <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">form</span><span class="sy0">;</span> <span class="sy1">?&gt;</span></div>
</div>
<p>Não podemos esquecer de adicionar a biblioteca jQuery a nossa camada view, pois ela irá nos ajudar muito no processo, vejamos o nosso código javascript para a validação:</p>
<div class="codesnip-container" >
<div class="javascript codesnip" style="font-family:monospace;">$<span class="br0">&#40;</span>document<span class="br0">&#41;</span>.<span class="me1">ready</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&#8216;#submit&#8217;</span><span class="br0">&#41;</span>.<span class="me1">bind</span><span class="br0">&#40;</span><span class="st0">&#8216;click&#8217;</span><span class="sy0">,</span> <span class="kw2">function</span> <span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e.<span class="me1">preventDefault</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> nome <span class="sy0">=</span> $<span class="br0">&#40;</span><span class="st0">&#8216;#nome&#8217;</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> email <span class="sy0">=</span> $<span class="br0">&#40;</span><span class="st0">&#8216;#email&#8217;</span><span class="br0">&#41;</span>.<span class="me1">val</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $.<span class="me1">ajax</span><span class="br0">&#40;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; url<span class="sy0">:</span> <span class="st0">&#8216;/index/validar&#8217;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; type<span class="sy0">:</span> <span class="st0">&#8216;post&#8217;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dataType<span class="sy0">:</span> <span class="st0">&#8216;json&#8217;</span><span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; data<span class="sy0">:</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; nome<span class="sy0">:</span> nome<span class="sy0">,</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; email<span class="sy0">:</span> email<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; success<span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span>data<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&#8216;.form-errors&#8217;</span><span class="br0">&#41;</span>.<span class="me1">remove</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>data <span class="sy0">==</span> <span class="kw2">true</span><span class="br0">&#41;</span> <span class="kw3">alert</span><span class="br0">&#40;</span> <span class="st0">&#8216;Passou&#8230;&#8217;</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>campo <span class="kw1">in</span> data<span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&#8216;#&#8217;</span><span class="sy0">+</span>campo<span class="br0">&#41;</span>.<span class="me1">after</span><span class="br0">&#40;</span><span class="st0">&#8216;&lt;ul id=&quot;&#8217;</span><span class="sy0">+</span>campo<span class="sy0">+</span><span class="st0">&#8216;_errors&quot; class=&quot;form-errors&quot;&gt;&lt;/ul&gt;&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>mensagem <span class="kw1">in</span> data<span class="br0">&#91;</span>campo<span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&#8216;#&#8217;</span><span class="sy0">+</span>campo<span class="sy0">+</span><span class="st0">&#8216;_errors&#8217;</span><span class="br0">&#41;</span>.<span class="me1">append</span><span class="br0">&#40;</span><span class="st0">&#8216;&lt;li&gt;&#8217;</span><span class="sy0">+</span>data<span class="br0">&#91;</span>campo<span class="br0">&#93;</span><span class="br0">&#91;</span>mensagem<span class="br0">&#93;</span><span class="sy0">+</span><span class="st0">&#8216;&lt;/li&gt;&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</div>
<p>Como vocês podem ver, nosso método validar irá retornar um objeto json para o jQuery poder trabalhar, e com o for iremos percorrer este objeto colocando cada mensagem em seu devido lugar. É um bom método por não fazer você ter que escrever duas validações, uma para javascript e outra para php. Você escreve apenas uma e utiliza em ambas as validações.</p>
<p>Agora nosso método validar:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="kw2">public</span> <span class="kw2">function</span> validarAction<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span>_request<span class="sy0">-&gt;</span><span class="me1">isXmlHttpRequest</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$form</span> <span class="sy0">=</span> <span class="kw2">new</span> Cadastro_Form<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">echo</span> <span class="re0">$form</span><span class="sy0">-&gt;</span><span class="me1">processAjax</span><span class="br0">&#40;</span><span class="re0">$this</span><span class="sy0">-&gt;</span>_request<span class="sy0">-&gt;</span><span class="me1">getPost</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div>
</div>
<p>Como vocês viram, devido ao nosso componente de formulário já está pronto tudo ficou muito mais simples, com apenas algumas linhas validamos e retornamos o resultado para o javascript poder exibir ao usuário.</p>
<p>O resultado desta combinação é muito interessante, pois mantem nossa aplicação modularizada, de forma que para adicionar novos campos no nosso formulário de cadastro não é necessário se preocupar com html e validação javascript, basta editar o componente Cadastro_Form.</p>
<p>Qualquer duvida deixa nos comentários ai que vamos trocando uma ideia. <img src='http://www.diegoholiveira.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Referencias:</p>
<p>http://framework.zend.com/manual/en/zend.form.html</p>
<p>http://framework.zend.com/manual/en/zend.validate.html</p>
<p>http://docs.jquery.com/Ajax</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diegoholiveira.com/blog/2009/05/21/validando-formularios-com-zend-form-jquery-e-ajax/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Manipulando XML com a SimpleXML</title>
		<link>http://www.diegoholiveira.com/blog/2009/04/30/manipulando-xml-com-a-simplexml/</link>
		<comments>http://www.diegoholiveira.com/blog/2009/04/30/manipulando-xml-com-a-simplexml/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 23:44:36 +0000</pubDate>
		<dc:creator>Diego Henrique</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.diegoholiveira.com/blog/?p=145</guid>
		<description><![CDATA[Quando eu começei a trabalhar com XML, principalmente em aplicações ajax, eu custumava fazer XML na mão, como se fossem string&#8217;s. Funcionavam, é verdade, mas não era uma boa solução, e na epoca eu pensava que a SimpleXML só servia para ler xml. Ledo engano. A SimpleXML é bem mais poderosa do que eu imaginava, [...]]]></description>
			<content:encoded><![CDATA[<p>Quando eu começei a trabalhar com XML, principalmente em aplicações ajax, eu custumava fazer XML na mão, como se fossem string&#8217;s. Funcionavam, é verdade, mas não era uma boa solução, e na epoca eu pensava que a SimpleXML só servia para ler xml. Ledo engano.</p>
<p>A SimpleXML é bem mais poderosa do que eu imaginava, ela pode manipular XML da forma que você precisar, seja apenas para leitura ou para alteração.</p>
<p>Vou mostrar algum codigo pra provar que a SimpleXML é realmente muito simples.</p>
<p>Instanciando um objeto para gerar um XML:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;">$xml = simplexml_load_string( &#8216;<span class="sy1">&lt;?</span>xml version<span class="sy0">=</span><span class="st0">&quot;1.0&quot;</span> encoding<span class="sy0">=</span><span class="st0">&quot;utf-8&quot;</span><span class="sy1">?&gt;</span>&lt;root&gt;&lt;/root&gt;&#8217; );</div>
</div>
<p>Ou entao você pode carregar um arquivo XML:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="re0">$xml</span> <span class="sy0">=</span> <a href="http://www.php.net/simplexml_load_file"><span class="kw3">simplexml_load_file</span></a><span class="br0">&#40;</span> <span class="st_h">&#8216;arquivoXML.xml&#8217;</span> <span class="br0">&#41;</span><span class="sy0">;</span></div>
</div>
<p>A partir disso você pode manipular o XML como quiser. Vamos supor que você queira adicionar nós com atributos. Dois metodos são importantes agora: addChild e addAttribute. Um exemplo do metodo addChild:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="re0">$xml</span><span class="sy0">-&gt;</span><span class="me1">addChild</span><span class="br0">&#40;</span><span class="st_h">&#8216;database&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</div>
<p>Isso geraria um xml assim:</p>
<div class="codesnip-container" >
<div class="xml codesnip" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;?xml</span> <span class="re0">version</span>=<span class="st0">&quot;1.0&quot;</span> <span class="re0">encoding</span>=<span class="st0">&quot;utf-8&quot;</span><span class="re2">?&gt;</span></span><br />
<span class="sc3"><span class="re1">&lt;root<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;database<span class="re2">&gt;</span></span><span class="re1">&lt;/database<span class="re2">&gt;</span></span></span><br />
<span class="sc3"><span class="re1">&lt;/root<span class="re2">&gt;</span></span></span></div>
</div>
<p>Agora suponhamos que queremos adicionar um novo nó dentro de database chamado connection com varios atributos:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="re0">$xml</span><span class="sy0">-&gt;</span><span class="me1">database</span><span class="sy0">-&gt;</span><span class="me1">addChild</span><span class="br0">&#40;</span><span class="st_h">&#8216;connection&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="re0">$xml</span><span class="sy0">-&gt;</span><span class="me1">database</span><span class="sy0">-&gt;</span><span class="me1">connection</span><span class="sy0">-&gt;</span><span class="me1">addAttribute</span><span class="br0">&#40;</span><span class="st_h">&#8216;server&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8216;localhost&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="re0">$xml</span><span class="sy0">-&gt;</span><span class="me1">database</span><span class="sy0">-&gt;</span><span class="me1">connection</span><span class="sy0">-&gt;</span><span class="me1">addAttribute</span><span class="br0">&#40;</span><span class="st_h">&#8216;user&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8216;root&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="re0">$xml</span><span class="sy0">-&gt;</span><span class="me1">database</span><span class="sy0">-&gt;</span><span class="me1">connection</span><span class="sy0">-&gt;</span><span class="me1">addAttribute</span><span class="br0">&#40;</span><span class="st_h">&#8216;pass&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8217;123&#8242;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="re0">$xml</span><span class="sy0">-&gt;</span><span class="me1">database</span><span class="sy0">-&gt;</span><span class="me1">connection</span><span class="sy0">-&gt;</span><span class="me1">addAttribute</span><span class="br0">&#40;</span><span class="st_h">&#8216;schema&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8216;tabela&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span></div>
</div>
<p>Com os codigos acima nosso XML ficaria assim:</p>
<div class="codesnip-container" >
<div class="xml codesnip" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;?xml</span> <span class="re0">version</span>=<span class="st0">&quot;1.0&quot;</span> <span class="re0">encoding</span>=<span class="st0">&quot;utf-8&quot;</span><span class="re2">?&gt;</span></span><br />
<span class="sc3"><span class="re1">&lt;root<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;database<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;connection</span> <span class="re0">server</span>=<span class="st0">&quot;localhost&quot;</span> <span class="re0">user</span>=<span class="st0">&quot;root&quot;</span> <span class="re0">pass</span>=<span class="st0">&quot;123&quot;</span> <span class="re0">schema</span>=<span class="st0">&quot;tabela&quot;</span> <span class="re2">/&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/database<span class="re2">&gt;</span></span></span><br />
<span class="sc3"><span class="re1">&lt;/root<span class="re2">&gt;</span></span></span></div>
</div>
<p>Viu como é simples manipular XML com a SimpleXML?<br />
Ah, se você precisar apagar um nó é ainda mais simples, basta usar o velho e conhecido unset, assim:</p>
<div class="codesnip-container" >
<div class="xml codesnip" style="font-family:monospace;">unset( $xml-&gt;database-&gt;connection );</div>
</div>
<p>E se você precisar salvar essa XML em arquivo é só usar a função file_put_contents, assim:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><a href="http://www.php.net/file_put_contents"><span class="kw3">file_put_contents</span></a><span class="br0">&#40;</span> <span class="st_h">&#8216;arquivoSaida.xml&#8217;</span><span class="sy0">,</span> <span class="re0">$xml</span><span class="sy0">-&gt;</span><span class="me1">asXML</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span><span class="sy0">;</span></div>
</div>
<p>Então é isso, qualquer duvida sobre manipulação de XML posta ae nos comentarios.</p>
<p> <img src='http://www.diegoholiveira.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Referencias:<br />
Manual do PHP: http://br.php.net/manual/en/ref.simplexml.php</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diegoholiveira.com/blog/2009/04/30/manipulando-xml-com-a-simplexml/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>PHP na linha de comando</title>
		<link>http://www.diegoholiveira.com/blog/2009/04/21/php-na-linha-de-comando/</link>
		<comments>http://www.diegoholiveira.com/blog/2009/04/21/php-na-linha-de-comando/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 20:16:59 +0000</pubDate>
		<dc:creator>Diego Henrique</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[cli]]></category>

		<guid isPermaLink="false">http://www.diegoholiveira.com/blog/?p=133</guid>
		<description><![CDATA[Hoje começei a brincar com o php na linha de comando e a desenvolver um pequeno script para postar mensagens no Twitter. O que é mais legal é que finalmente eu encontrei uma forma de entrar com dados via linha de comandos. No C, para entrarmos com dados fazemos assim: printf&#40;&#34;Digite seu nome: &#34;&#41;; scanf&#40;&#34;%s&#34;, [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje começei a brincar com o php na linha de comando e a desenvolver um pequeno script para postar mensagens no Twitter. O que é mais legal é que finalmente eu encontrei uma forma de entrar com dados via linha de comandos.<br />
No C, para entrarmos com dados fazemos assim:</p>
<div class="codesnip-container" >
<div class="c codesnip" style="font-family:monospace;"><a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html"><span class="kw3">printf</span></a><span class="br0">&#40;</span><span class="st0">&quot;Digite seu nome: &quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
scanf<span class="br0">&#40;</span><span class="st0">&quot;%s&quot;</span><span class="sy0">,</span> nome<span class="br0">&#41;</span><span class="sy0">;</span></div>
</div>
<p>Agora, no PHP muda um pouco, porem a ideia é a mesma:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="kw1">echo</span> <span class="st_h">&#8216;Digite seu nome: &#8216;</span><span class="sy0">;</span><br />
<span class="re0">$nome</span> <span class="sy0">=</span> <a href="http://www.php.net/fgets"><span class="kw3">fgets</span></a><span class="br0">&#40;</span>STDIN<span class="br0">&#41;</span><span class="sy0">;</span></div>
</div>
<p>Notem que na função fgets eu inserir a constante STDIN ao inves de um resource (arquivo por exemplo). Atraves dessa constante informamos ao php para buscar os dados na entrada padrão, que no caso é a linha de comando. Simples né? Porem eu realmente só aprendi isso hoje. <img src='http://www.diegoholiveira.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Tambem existe a constante STDOUT, que é a saida padrão.</p>
<p>Segue o codigo do pequeno script do Twitter que desenvolvi para quem quiser estuda-lo, e se acaso você melhora-lo, não deixe de me avisar postando um comentario aqui ou me mandando um email.</p>
<p><a href="http://www.diegoholiveira.com/blog/wp-content/uploads/2009/04/twitterphp.inc">twitter.php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.diegoholiveira.com/blog/2009/04/21/php-na-linha-de-comando/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Flickr e PHP 5</title>
		<link>http://www.diegoholiveira.com/blog/2009/03/29/flickr-e-php-5/</link>
		<comments>http://www.diegoholiveira.com/blog/2009/03/29/flickr-e-php-5/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 05:18:35 +0000</pubDate>
		<dc:creator>Diego Henrique</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.diegoholiveira.com/blog/?p=127</guid>
		<description><![CDATA[Eu sempre defendo iniciar novos projetos em php 5 por alguns motivos: - Programação Orientada a Objetos; - Framework: uso muito o Zend Framework e ele só roda por cima do PHP 5; - PHP 4 descontinuado. Pois bem, agora eu tenho mais um grande motivo para defender o PHP 5 e ate para convencer [...]]]></description>
			<content:encoded><![CDATA[<p>Eu sempre defendo iniciar novos projetos em php 5 por alguns motivos:<br />
- Programação Orientada a Objetos;<br />
- Framework: uso muito o Zend Framework e ele só roda por cima do PHP 5;<br />
- PHP 4 descontinuado.</p>
<p>Pois bem, agora eu tenho mais um grande motivo para defender o PHP 5 e ate para convencer algumas pessoas a migrarem suas aplicações de PHP 4 para a versão 5. Recentemente o Flick migrou de php 4 para php 5 e um dos resultados da migração é este grafico de consumo de CPU, que foi publicado por John Allspaw&#8217;s.</p>
<p><a title="Clique para ampliar" href="http://www.flickr.com/photos/allspaw/3384206153/" target="_BLANK"><img src="http://farm4.static.flickr.com/3581/3384206153_00643b72cf_m.jpg" alt="" /></a></p>
<p>Incrivel né???</p>
<p>ps.: Quando eu digo que sempre defendo iniciar novos projetos usando php 5 é porque ainda existem pessoas por ai querendo iniciar novos e interessantes projetos em php 4, não me pergunte porque. <img src='http://www.diegoholiveira.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.diegoholiveira.com/blog/2009/03/29/flickr-e-php-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalando o xdebug no PHP 5.2 rodando no Windows XP</title>
		<link>http://www.diegoholiveira.com/blog/2009/03/11/instalando-o-xdebug-no-php-52-rodando-no-windows-xp/</link>
		<comments>http://www.diegoholiveira.com/blog/2009/03/11/instalando-o-xdebug-no-php-52-rodando-no-windows-xp/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 14:30:52 +0000</pubDate>
		<dc:creator>Diego Henrique</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Dicas]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[xdebug]]></category>

		<guid isPermaLink="false">http://www.diegoholiveira.com/blog/?p=120</guid>
		<description><![CDATA[Como instalar o xdebug no php 5.2 rodando no windows XP em 4 passos simples: Passo 1: Vá ate http://www.xdebug.org/download.php e baixe a versão compilada 5.2 VC6. Passo 2: Após isso, copie a dll baixada (a atual é php_xdebug-2.0.4-5.2.8.dll) para a pasta ext dentro do diretorio do php. (no meu caso o diretorio é c:\php\ext) [...]]]></description>
			<content:encoded><![CDATA[<p>Como instalar o xdebug no php 5.2 rodando no windows XP em 4 passos simples:</p>
<p>Passo 1: Vá ate <a href="http://www.xdebug.org/download.php" target="_BLANK">http://www.xdebug.org/download.php</a> e baixe a versão compilada 5.2 VC6.<br />
Passo 2: Após isso, copie a dll baixada (a atual é php_xdebug-2.0.4-5.2.8.dll) para a pasta ext dentro do diretorio do php. (no meu caso o diretorio é c:\php\ext)<br />
Passo 3: Abra seu php.ini e procure a sessão &#8220;Dynamic Extensions&#8221;, e adicione a seguinte linha:</p>
<div class="codesnip-container" >
<div class="ini codesnip" style="font-family:monospace;"><span class="re1">zend_extension_ts</span><span class="sy0">=</span><span class="st0">&quot;c:/phpzext\php_xdebug-2.0.4-5.2.8.dll&quot;</span>.</div>
</div>
<p>Passo 4: Reinicie seu apache para que o php possa carregar as alterações do php.ini.</p>
<p>Pronto. Se estiver tudo correto, a sua saida do php_info() deve ficar assim:</p>
<p><img class="alignnone size-full wp-image-121" title="php_xdebug" src="http://www.diegoholiveira.com/blog/wp-content/uploads/2009/03/php_xdebug.png" alt="php_xdebug" width="625" height="99" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.diegoholiveira.com/blog/2009/03/11/instalando-o-xdebug-no-php-52-rodando-no-windows-xp/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Novos projetos brasileiros sobre PHP</title>
		<link>http://www.diegoholiveira.com/blog/2009/01/30/novos-projetos-brasileiros-sobre-php/</link>
		<comments>http://www.diegoholiveira.com/blog/2009/01/30/novos-projetos-brasileiros-sobre-php/#comments</comments>
		<pubDate>Fri, 30 Jan 2009 17:30:21 +0000</pubDate>
		<dc:creator>Diego Henrique</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.diegoholiveira.com/blog/2009/01/30/novos-projetos-brasileiros-sobre-php/</guid>
		<description><![CDATA[Dois novos projetos brasileiros sobre php entraram no ar recentemente: - http://php.com.br/ - http://www.php-obj.com.br/ A iniciativa é legal, vamos ver onde esses projetos vão parar&#8230;]]></description>
			<content:encoded><![CDATA[<p>Dois novos projetos brasileiros sobre php entraram no ar recentemente:<br />
- <a href="http://php.com.br/">http://php.com.br/</a><br />
- <a href="http://www.php-obj.com.br/">http://www.php-obj.com.br/</a></p>
<p>A iniciativa é legal, vamos ver onde esses projetos vão parar&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diegoholiveira.com/blog/2009/01/30/novos-projetos-brasileiros-sobre-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serialização de um objeto MySQLi</title>
		<link>http://www.diegoholiveira.com/blog/2009/01/15/serializacao-objeto-mysqli/</link>
		<comments>http://www.diegoholiveira.com/blog/2009/01/15/serializacao-objeto-mysqli/#comments</comments>
		<pubDate>Thu, 15 Jan 2009 23:11:44 +0000</pubDate>
		<dc:creator>Diego Henrique</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.diegoholiveira.com/blog/?p=79</guid>
		<description><![CDATA[A algum tempo atras eu escrevi um post sobre serialização de objetos. O Ari Garcia recentemente fez um comentario no post me pedindo um exemplo para persistencia de resources. Devido a isso vou mostrar um exemplo para persistir uma conexão mysqli em uma sessão. Vou fazer o seguinte: extender a classe mysqli com os meus [...]]]></description>
			<content:encoded><![CDATA[<p>A algum tempo atras eu escrevi um post sobre serialização de objetos. O Ari Garcia recentemente fez um comentario no post me pedindo um exemplo para persistencia de resources.</p>
<p>Devido a isso vou mostrar um exemplo para persistir uma conexão mysqli em uma sessão.</p>
<p>Vou fazer o seguinte: extender a classe mysqli com os meus metodos magicos para serialização, coisa simples mesmo.</p>
<p>Ta ai o exemplo:</p>
<div class="codesnip-container" >
<div class="php codesnip" style="font-family:monospace;"><span class="kw2">class</span> mysqliExt <span class="kw2">extends</span> mysqli <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; protected <span class="re0">$_config</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> __construct<span class="br0">&#40;</span> <span class="re0">$host</span><span class="sy0">,</span> <span class="re0">$user</span><span class="sy0">,</span> <span class="re0">$pass</span><span class="sy0">,</span> <span class="re0">$schema</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span>_config<span class="br0">&#91;</span><span class="st_h">&#8216;host&#8217;</span><span class="br0">&#93;</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=</span> <span class="re0">$host</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span>_config<span class="br0">&#91;</span><span class="st_h">&#8216;user&#8217;</span><span class="br0">&#93;</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=</span> <span class="re0">$user</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span>_config<span class="br0">&#91;</span><span class="st_h">&#8216;pass&#8217;</span><span class="br0">&#93;</span>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=</span> <span class="re0">$pass</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span>_config<span class="br0">&#91;</span><span class="st_h">&#8216;schema&#8217;</span><span class="br0">&#93;</span>&nbsp; &nbsp; &nbsp; &nbsp; <span class="sy0">=</span> <span class="re0">$schema</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">conectar</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; protected <span class="kw2">function</span> conectar<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; parent<span class="sy0">::</span>__construct<span class="br0">&#40;</span> <span class="re0">$this</span><span class="sy0">-&gt;</span>_config<span class="br0">&#91;</span><span class="st_h">&#8216;host&#8217;</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="re0">$this</span><span class="sy0">-&gt;</span>_config<span class="br0">&#91;</span><span class="st_h">&#8216;user&#8217;</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="re0">$this</span><span class="sy0">-&gt;</span>_config<span class="br0">&#91;</span><span class="st_h">&#8216;pass&#8217;</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="re0">$this</span><span class="sy0">-&gt;</span>_config<span class="br0">&#91;</span><span class="st_h">&#8216;schema&#8217;</span><span class="br0">&#93;</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> __sleep<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <a href="http://www.php.net/array"><span class="kw3">array</span></a><span class="br0">&#40;</span><span class="st_h">&#8216;_config&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">public</span> <span class="kw2">function</span> __wakeup<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">$this</span><span class="sy0">-&gt;</span><span class="me1">conectar</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></p>
<p>
<span class="re0">$db</span> <span class="sy0">=</span> <span class="kw2">new</span> mysqliExt<span class="br0">&#40;</span><span class="st_h">&#8216;localhost&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8216;root&#8217;</span><span class="sy0">,</span> <span class="st_h">&#8221;</span><span class="sy0">,</span> <span class="st_h">&#8216;test&#8217;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="co1">// Serializando o objeto</span><br />
<span class="re0">$db_serializado</span> <span class="sy0">=</span> <a href="http://www.php.net/serialize"><span class="kw3">serialize</span></a><span class="br0">&#40;</span> <span class="re0">$db</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="re0">$rowset</span> <span class="sy0">=</span> <span class="re0">$db</span><span class="sy0">-&gt;</span><span class="me1">query</span><span class="br0">&#40;</span> <span class="st_h">&#8216;show tables&#8217;</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw1">echo</span> <span class="st_h">&#8216;Usando o objeto original: &#8216;</span> <span class="sy0">.</span> PHP_EOL<span class="sy0">;</span><br />
<span class="kw1">echo</span> <span class="st_h">&#8216;Tabelas no banco de dados atual: &#8216;</span> <span class="sy0">.</span> <a href="http://www.php.net/count"><span class="kw3">count</span></a><span class="br0">&#40;</span> <span class="re0">$rowset</span> <span class="br0">&#41;</span> <span class="sy0">.</span> PHP_EOL<span class="sy0">;</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/count"><span class="kw3">count</span></a><span class="br0">&#40;</span><span class="re0">$rowset</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">while</span> <span class="br0">&#40;</span><span class="re0">$row</span> <span class="sy0">=</span> <span class="re0">$rowset</span><span class="sy0">-&gt;</span><span class="me1">fetch_object</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">echo</span> <span class="re0">$row</span><span class="sy0">-&gt;</span><span class="me1">Tables_in_gilcolor</span> <span class="sy0">.</span> PHP_EOL<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></p>
<p><span class="kw1">echo</span> PHP_EOL<span class="sy0">;</span></p>
<p><span class="co1">// Recuperando o objecto selecionado</span><br />
<span class="re0">$db2</span> <span class="sy0">=</span> <a href="http://www.php.net/unserialize"><span class="kw3">unserialize</span></a><span class="br0">&#40;</span> <span class="re0">$db_serializado</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="re0">$rowset2</span> <span class="sy0">=</span> <span class="re0">$db2</span><span class="sy0">-&gt;</span><span class="me1">query</span><span class="br0">&#40;</span> <span class="st_h">&#8216;show tables&#8217;</span> <span class="br0">&#41;</span><span class="sy0">;</span><br />
<span class="kw1">echo</span> <span class="st_h">&#8216;Usando o objeto apos a serializacao: &#8216;</span> <span class="sy0">.</span> PHP_EOL<span class="sy0">;</span><br />
<span class="kw1">echo</span> <span class="st_h">&#8216;Tabelas no banco de dados atual: &#8216;</span> <span class="sy0">.</span> <a href="http://www.php.net/count"><span class="kw3">count</span></a><span class="br0">&#40;</span> <span class="re0">$rowset2</span> <span class="br0">&#41;</span> <span class="sy0">.</span> PHP_EOL<span class="sy0">;</span><br />
<span class="kw1">if</span> <span class="br0">&#40;</span><a href="http://www.php.net/count"><span class="kw3">count</span></a><span class="br0">&#40;</span><span class="re0">$rowset2</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">while</span> <span class="br0">&#40;</span><span class="re0">$row2</span> <span class="sy0">=</span> <span class="re0">$rowset2</span><span class="sy0">-&gt;</span><span class="me1">fetch_object</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">echo</span> <span class="re0">$row2</span><span class="sy0">-&gt;</span><span class="me1">Tables_in_gilcolor</span> <span class="sy0">.</span> PHP_EOL<span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
<span class="br0">&#125;</span></div>
</div>
<p><em>ps.: rodei esse codigo em linha de comando.</em></p>
<p>Qualquer duvida comenta ai que eu respondo o mais rapido possivel.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diegoholiveira.com/blog/2009/01/15/serializacao-objeto-mysqli/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
