<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2portuguesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>Wellington Rocha</title>
	
	<link>http://wellrocha.com.br/blog</link>
	<description>Coca-Cola e Lógica na Cabeça</description>
	<lastBuildDate>Mon, 21 Jun 2010 04:31:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/wellrocha" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="wellrocha" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fwellrocha" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fwellrocha" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fwellrocha" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/wellrocha" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fwellrocha" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fwellrocha" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fwellrocha" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fwellrocha" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><item>
		<title>WordPress, links que me ajudaram na criação de Widgets e Plugins.</title>
		<link>http://wellrocha.com.br/blog/2010/06/21/wordpress-links-que-me-ajudaram-na-criacao-de-widgets-e-plugins/</link>
		<comments>http://wellrocha.com.br/blog/2010/06/21/wordpress-links-que-me-ajudaram-na-criacao-de-widgets-e-plugins/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 04:19:07 +0000</pubDate>
		<dc:creator>wellrocha</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://wellrocha.com.br/blog/?p=951</guid>
		<description><![CDATA[Olá ! Vou colocar abaixo os links que solucionaram a maioria das dúvidas que eu tinha em geral e na confecção de Widgets e Plugins. http://codex.wordpress.org/Adding_Administration_Menus http://codex.wordpress.org/Writing_a_Plugin http://codex.wordpress.org/Creating_Tables_with_Plugins http://p2p.wrox.com/content/articles/wordpress-database-queries-operations-and-errors http://codex.wordpress.org/WordPress_Coding_Standards http://codex.wordpress.org/Managing_Plugins http://codex.wordpress.org/Database_Description http://codex.wordpress.org/Function_Reference/wpdb_Class http://stackoverflow.com/questions/1576018/how-to-get-last-inserted-row-id-from-wordpress-database http://www.wordpresstech.com.br/10-comandos-sql-para-wordpress/ http://codex.wordpress.org/Plugins/WordPress_Widgets_Api http://codex.wordpress.org/Plugin_API http://en.gravatar.com/site/implement http://codex.wordpress.org/Function_Reference http://www.tudoparawordpress.com.br/dicas-wordpress/como-implementar-widgets-no-seu-template-wordpress/ http://wordpress.org/support/topic/70176 http://www.ruanmer.com.br/blog/criando-uma-pagina-personalizada-no-wordpress/ http://nikhilmisal.com/how-to-change-default-gravatar-in-wordpress/ http://xemele.cultura.gov.br/blog/2009/07/18/criando-widgets-para-o-wordpress-28/ http://xemele.cultura.gov.br/blog/2009/02/11/criando-um-plugin/ http://codex.wordpress.org/Function_Reference/query_posts Evite criar Widget com espaços no nome, você pode [...]]]></description>
			<content:encoded><![CDATA[<p>Olá ! </p>
<p>Vou colocar abaixo os links que solucionaram a maioria das dúvidas que eu tinha em <strong>geral </strong>e na confecção de <strong>Widgets </strong>e <strong>Plugins</strong>.</p>
<p><span id="more-951"></span></p>
<p><a href="http://codex.wordpress.org/Adding_Administration_Menus">http://codex.wordpress.org/Adding_Administration_Menus<br />
</a></p>
<p><a href="http://codex.wordpress.org/Writing_a_Plugin">http://codex.wordpress.org/Writing_a_Plugin<br />
</a></p>
<p><a href="http://codex.wordpress.org/Creating_Tables_with_Plugins">http://codex.wordpress.org/Creating_Tables_with_Plugins<br />
</a></p>
<p><a href="http://p2p.wrox.com/content/articles/wordpress-database-queries-operations-and-errors">http://p2p.wrox.com/content/articles/wordpress-database-queries-operations-and-errors<br />
</a></p>
<p><a href="http://codex.wordpress.org/WordPress_Coding_Standards">http://codex.wordpress.org/WordPress_Coding_Standards<br />
</a></p>
<p><a href="http://codex.wordpress.org/Managing_Plugins">http://codex.wordpress.org/Managing_Plugins<br />
</a></p>
<p><a href="http://codex.wordpress.org/Database_Description">http://codex.wordpress.org/Database_Description<br />
</a></p>
<p><a href="http://codex.wordpress.org/Function_Reference/wpdb_Class">http://codex.wordpress.org/Function_Reference/wpdb_Class<br />
</a></p>
<p><a href="http://stackoverflow.com/questions/1576018/how-to-get-last-inserted-row-id-from-wordpress-database">http://stackoverflow.com/questions/1576018/how-to-get-last-inserted-row-id-from-wordpress-database<br />
</a></p>
<p><a href="http://www.wordpresstech.com.br/10-comandos-sql-para-wordpress/">http://www.wordpresstech.com.br/10-comandos-sql-para-wordpress/<br />
</a></p>
<p><a href="http://codex.wordpress.org/Plugins/WordPress_Widgets_Api">http://codex.wordpress.org/Plugins/WordPress_Widgets_Api<br />
</a></p>
<p><a href="http://codex.wordpress.org/Plugin_API">http://codex.wordpress.org/Plugin_API<br />
</a></p>
<p><a href="http://en.gravatar.com/site/implement">http://en.gravatar.com/site/implement<br />
</a></p>
<p><a href="http://codex.wordpress.org/Function_Reference">http://codex.wordpress.org/Function_Reference<br />
</a></p>
<p><a href="http://www.tudoparawordpress.com.br/dicas-wordpress/como-implementar-widgets-no-seu-template-wordpress/">http://www.tudoparawordpress.com.br/dicas-wordpress/como-implementar-widgets-no-seu-template-wordpress/<br />
</a></p>
<p><a href="http://wordpress.org/support/topic/70176">http://wordpress.org/support/topic/70176<br />
</a></p>
<p><a href="http://www.ruanmer.com.br/blog/criando-uma-pagina-personalizada-no-wordpress/">http://www.ruanmer.com.br/blog/criando-uma-pagina-personalizada-no-wordpress/<br />
</a></p>
<p><a href="http://nikhilmisal.com/how-to-change-default-gravatar-in-wordpress/">http://nikhilmisal.com/how-to-change-default-gravatar-in-wordpress/<br />
</a></p>
<p><a href="http://xemele.cultura.gov.br/blog/2009/07/18/criando-widgets-para-o-wordpress-28/">http://xemele.cultura.gov.br/blog/2009/07/18/criando-widgets-para-o-wordpress-28/<br />
</a></p>
<p><a href="http://xemele.cultura.gov.br/blog/2009/02/11/criando-um-plugin/">http://xemele.cultura.gov.br/blog/2009/02/11/criando-um-plugin/<br />
</a></p>
<p><a href="http://codex.wordpress.org/Function_Reference/query_posts">http://codex.wordpress.org/Function_Reference/query_posts<br />
</a></p>
<p>Evite criar <strong>Widget </strong>com espaços no nome, você pode ter problemas.</p>
<p>Happy coding xD !</p>
]]></content:encoded>
			<wfw:commentRss>http://wellrocha.com.br/blog/2010/06/21/wordpress-links-que-me-ajudaram-na-criacao-de-widgets-e-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Descobrindo a extensão de um arquivo com PHP</title>
		<link>http://wellrocha.com.br/blog/2010/04/24/descobrindo-a-extensao-de-um-arquivo-com-php/</link>
		<comments>http://wellrocha.com.br/blog/2010/04/24/descobrindo-a-extensao-de-um-arquivo-com-php/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 19:17:27 +0000</pubDate>
		<dc:creator>wellrocha</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://wellrocha.com.br/blog/?p=915</guid>
		<description><![CDATA[Precisei fazer isso quando estava renomeando os arquivos feitos via upload no Zend Framework para o id do banco de dados, o algoritmo é simples e não tem nenhum segredo: &#60;?php header (&#039;Content-type: text/html; charset=utf-8&#039;); class Utils { /** * Retorna a extensão do arquivo indepedente do nome. * * @param $file * @author Wellington [...]]]></description>
			<content:encoded><![CDATA[<p>Precisei fazer isso quando estava renomeando os arquivos feitos via upload no <strong>Zend Framework</strong> para o id do banco de dados, o algoritmo é simples e não tem nenhum segredo:</p>
<p><span id="more-915"></span></p>
<pre class="brush: php">
&lt;?php

header (&#039;Content-type: text/html; charset=utf-8&#039;);

class Utils
{
	/**
	 * Retorna a extensão do arquivo indepedente do nome.
	 *
	 * @param $file
	 * @author Wellington Rocha
	 * @return $extensao
	 */

	public static function getExtension ($file)
	{
		if (!preg_match(&quot;/(\.(jpg|jpeg|png|gif|pdf))$/&quot;, $file, $match))
			throw new Exception(&#039;Não foi possível identificar o formato do seu arquivo !&#039;);					

		return $match[0];
	}
}

$file = &#039;uploads/fotos/--0090wellington.na-balada.png&#039;;

$extension = Utils::getExtension($file);

echo &quot;O Formato do arquivo &#039;{$file}&#039; é = &quot;. $extension;

echo &#039;&lt;pre&gt;&#039;;
	var_dump(pathinfo($file));
echo &#039;&lt;/pre&gt;&#039;;
</pre>
<p>Fiz um post porque um amigo Flasheiro estava com o mesmo problema, daí eu passei essa lógica para ele e resolveu <img src='http://wellrocha.com.br/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>* Corrigi o algoritmo conforme a dica do <strong>@Lucas Fernando Amorim</strong><br />
* Não me escutem e usem a função nativa do php, <a href="http://www.php.net/manual/pt_BR/function.pathinfo.php" target="_blank" title="pathinfo">pathinfo</a>. Obrigado <strong>Alexandre.Gaigalas.Net</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://wellrocha.com.br/blog/2010/04/24/descobrindo-a-extensao-de-um-arquivo-com-php/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Zend Framework Criando View Helpers</title>
		<link>http://wellrocha.com.br/blog/2009/10/20/zend-framework-criando-view-helpers/</link>
		<comments>http://wellrocha.com.br/blog/2009/10/20/zend-framework-criando-view-helpers/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 12:33:59 +0000</pubDate>
		<dc:creator>wellrocha</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://wellrocha.com.br/blog/?p=799</guid>
		<description><![CDATA[Muitas vezes ocorre a necessidade de escrever algo complexo na sua view, e a primeira coisa que você faz quando não conhece, é escrever os seus códigos lá. Seja uma função para formatar a data, pegar algum parâmetro via get, retornar a ação atual ou controlador. A view deve se preocupar somente em renderizar os [...]]]></description>
			<content:encoded><![CDATA[<p>Muitas vezes ocorre a necessidade de escrever algo complexo na sua <strong>view</strong>, e a primeira coisa que você faz quando não conhece, é escrever os seus códigos lá. Seja uma função para formatar a data, pegar algum parâmetro via get, retornar a ação atual ou controlador.</p>
<p>A <strong>view </strong>deve se preocupar somente em renderizar os dados, ela nasceu com esse propósito, não devemos colocar a <strong>lógica da aplicação</strong> na <strong>view</strong>.</p>
<p><span id="more-799"></span></p>
<p><strong>O que são View Helpers ?</strong></p>
<p>É uma <strong>Classe auxiliar</strong>, com o propósito de <strong>abstrair </strong>os códigos que ficariam  escritos na <strong>view</strong>.</p>
<p><strong>Como escrever um Helper para a View ?</strong></p>
<p>Pensei em uma situação real e simples para exemplo, segue abaixo:</p>
<pre class="brush: php">

&lt;?

/*

Temos a variável $dados, precisamos formatar a data para o padrão brasileiro.
Vou mostrar duas formas de se fazer, uma utilizando o helper e outra sem.

*/

$dados = array(
	array(
		&#039;nome&#039; =&gt; &#039;Chuck Norris&#039;,
		&#039;data_cadastro&#039; =&gt; &#039;2002-12-01&#039;
	),
	array(
		&#039;nome&#039; =&gt; &#039;Darth Vader&#039;,
		&#039;data_cadastro&#039; =&gt; &#039;2003-01-01&#039;
	),
	array(
		&#039;nome&#039; =&gt; &#039;Goku&#039;,
		&#039;data_cadastro&#039; =&gt; &#039;2000-02-01&#039;
	),
	array(
		&#039;nome&#039; =&gt; &#039;Kuririn&#039;,
		&#039;data_cadastro&#039; =&gt; &#039;2005-09-01&#039;
	)
);

?&gt;

&lt;table summary=&quot;Employee Pay Sheet&quot; id=&quot;box-table-a&quot;&gt;
	&lt;thead&gt;
		&lt;tr&gt;
			&lt;th scope=&quot;col&quot;&gt;Nome&lt;/th&gt;
			&lt;th scope=&quot;col&quot;&gt;Data Cadastro&lt;/th&gt;
		&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
		&lt;? foreach ($dados as $cadastro) :
			// (Sem Helper) Ops.. Acabei de sujar meu código !
			$data = explode(&#039;-&#039;, $cadastro[&#039;data_cadastro&#039;]); ?&gt;
			&lt;tr&gt;
				&lt;td&gt;&lt;?=$cadastro[&#039;nome&#039;]?&gt;&lt;/td&gt;
				&lt;td&gt;&lt;?=$data[2]. &#039;/&#039; .$data[1]. &#039;/&#039; .$data[0]?&gt;&lt;/td&gt;
			&lt;/tr&gt;
		&lt;? endforeach; ?&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
</pre>
<p><strong>Escrevendo o Helper:</strong></p>
<pre class="brush: php">
&lt;?php

// application/default/views/helpers/ConverteData.php

class Zend_View_Helper_ConverteData {

	public function converteData($data)
	{
		$data = explode(&#039;-&#039;, $data);			

		return $data[2]. &#039;/&#039; .$data[1]. &#039;/&#039; .$data[0];
	}

}
</pre>
<p><strong>Utilizando:</strong></p>
<pre class="brush: php">
&lt;?

$dados = array(
	array(
		&#039;nome&#039; =&gt; &#039;Chuck Norris&#039;,
		&#039;data_cadastro&#039; =&gt; &#039;2002-12-01&#039;
	),
	array(
		&#039;nome&#039; =&gt; &#039;Darth Vader&#039;,
		&#039;data_cadastro&#039; =&gt; &#039;2003-01-01&#039;
	),
	array(
		&#039;nome&#039; =&gt; &#039;Goku&#039;,
		&#039;data_cadastro&#039; =&gt; &#039;2000-02-01&#039;
	),
	array(
		&#039;nome&#039; =&gt; &#039;Kuririn&#039;,
		&#039;data_cadastro&#039; =&gt; &#039;2005-09-01&#039;
	)
);

?&gt;

&lt;table summary=&quot;Employee Pay Sheet&quot; id=&quot;box-table-a&quot;&gt;
	&lt;thead&gt;
		&lt;tr&gt;
			&lt;th scope=&quot;col&quot;&gt;Nome&lt;/th&gt;
			&lt;th scope=&quot;col&quot;&gt;Data Cadastro&lt;/th&gt;
		&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
		&lt;? foreach ($dados as $cadastro) : ?&gt;
			&lt;tr&gt;
				&lt;td&gt;&lt;?=$cadastro[&#039;nome&#039;]?&gt;&lt;/td&gt;
				&lt;!-- Agora vamos chamar o nosso Helper. --&gt;
				&lt;td&gt;&lt;?=$this-&gt;converteData($cadastro[&#039;data_cadastro&#039;])?&gt;&lt;/td&gt;
			&lt;/tr&gt;
		&lt;? endforeach; ?&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
</pre>
<p><strong>Resultado:</strong></p>
<p><a href="http://wellrocha.com.br/blog/wp-content/uploads/2009/10/zend-framework-criando-view-helpers.jpg" target="_blank"><img src="http://wellrocha.com.br/blog/wp-content/uploads/2009/10/zend-framework-criando-view-helpers-300x206.jpg" alt="zend-framework-criando-view-helpers" title="zend-framework-criando-view-helpers" width="300" height="206" class="alignnone size-medium wp-image-818" /></a></p>
<p>Este exemplo foi simples, mas já da para perceber como você pode complicar as coisas escrevendo códigos <strong>php </strong>na <strong>view</strong>.</p>
<p><a href='http://wellrocha.com.br/blog/wp-content/uploads/2009/10/zend-framework-criando-view-helpers.rar'>Download.</a></p>
<p><strong>Fonte: </strong></p>
<p><a href="http://framework.zend.com/manual/en/zend.view.helpers.html">http://framework.zend.com/manual/en/zend.view.helpers.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wellrocha.com.br/blog/2009/10/20/zend-framework-criando-view-helpers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework renderizando layouts diferentes</title>
		<link>http://wellrocha.com.br/blog/2009/09/23/zend-framework-renderizando-layouts-diferentes/</link>
		<comments>http://wellrocha.com.br/blog/2009/09/23/zend-framework-renderizando-layouts-diferentes/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 13:13:44 +0000</pubDate>
		<dc:creator>wellrocha</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://wellrocha.com.br/blog/?p=722</guid>
		<description><![CDATA[Se você já aprendeu a trabalhar com módulos, a próxima dúvida deve ser como renderizar layouts diferentes para cada um. Usarei de exemplo a estrutura default e admin. No seu Bootstrap.php adicione: //application/Bootstrap.php protected function _initView() { $view = new Zend_View; $view-&#62;setEncoding(&#039;UTF-8&#039;); Zend_Layout::startMvc( array( &#039;layoutPath&#039; =&#62; APPLICATION_PATH . &#039;/default/views/layouts/scripts&#039;, &#039;layout&#039; =&#62; &#039;default&#039;, // default deve [...]]]></description>
			<content:encoded><![CDATA[<p>Se você já aprendeu a trabalhar com <strong>módulos</strong>, a próxima dúvida deve ser como renderizar <strong>layouts </strong>diferentes para cada um.</p>
<p><span id="more-722"></span></p>
<p>Usarei de exemplo a estrutura <strong>default </strong>e <strong>admin</strong>.</p>
<p>No seu <strong>Bootstrap.php</strong> adicione:</p>
<pre class="brush: php">

//application/Bootstrap.php

protected function _initView()
{
$view = new Zend_View;
$view-&gt;setEncoding(&#039;UTF-8&#039;);

Zend_Layout::startMvc(
array(
&#039;layoutPath&#039; =&gt; APPLICATION_PATH . &#039;/default/views/layouts/scripts&#039;,
&#039;layout&#039; =&gt; &#039;default&#039;, // default deve ser o nome do arquivo. Ex: default.phtml
&#039;pluginClass&#039; =&gt; &#039;App_Plugins_SetLayout&#039; // é aqui onde acontece a mágica
)
);
}
</pre>
<p><strong>agora em App_Plugins_SetLayout</strong>:</p>
<pre class="brush: php">

&lt;?php

//library/App/Plugins/SetLayout.php

class App_Plugins_SetLayout extends Zend_Layout_Controller_Plugin_Layout
{

// o preDispatch é chamado antes de uma ação ser despachada pelo dispatcher
// com isso, usamos o nosso objeto request e extraimos o nome do módulo

public function preDispatch (Zend_Controller_Request_Abstract $request)
{
switch ($request-&gt;getModuleName()) {
case &#039;admin&#039;:
$this-&gt;_setupLayout(&#039;admin&#039;);
}
}

// Dispensa comentários

protected function _setupLayout ($moduleName)
{

$this-&gt;getLayout()-&gt;setLayoutPath(APPLICATION_PATH . &#039;/&#039; . $moduleName . &#039;/views/layouts/scripts&#039;);

$this-&gt;getLayout()-&gt;setLayout($moduleName);
}

}
</pre>
<p>Pronto, mas se você testar vai dar <strong>erro</strong> dizendo que não foi encontrado o seu arquivo de <strong>layout</strong>, até porque você só <strong>setou a estrutura.</strong></p>
<p><strong>Layout default:</strong></p>
<pre class="brush: php">

&lt;? //application/default/views/layouts/scripts/default.phtml ?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://127.0.0.1/main.css&quot; /&gt;
&lt;title&gt;Layout do Módulo Default&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;wrapper&quot;&gt;
&lt;div id=&quot;header&quot;&gt;
&lt;h1&gt;Default&lt;/h1&gt;
&lt;/div&gt;
&lt;div id=&quot;content&quot;&gt;
&lt;?// o conteúdo da sua view default será renderizado dentro do $this-&gt;layout()-&gt;content ?&gt;
&lt;?=$this-&gt;layout()-&gt;content?&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p><strong>Index default:</strong></p>
<pre class="brush: php">

&lt;?php

//application/default/controllers/IndexController.php

class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
$this-&gt;view-&gt;default = &#039;Lorem Ipsum is simply dummy text of the printing and typesetting industry.&#039;;
}
}
</pre>
<p><strong>View default:</strong></p>
<pre class="brush: php">

&lt;? //application/default/views/scripts/index/index.phtml ?&gt;
&lt;h2&gt;
&lt;?=$this-&gt;default?&gt;
&lt;/h2&gt;
</pre>
<p><strong>Layout admin:</strong></p>
<pre class="brush: php">

&lt;? //application/admin/views/layouts/scripts/admin.phtml ?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;http://127.0.0.1/main.css&quot; /&gt;
&lt;title&gt;Layout do Módulo Admin&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;wrapper&quot;&gt;
&lt;div id=&quot;header&quot;&gt;
&lt;h1&gt;Admin&lt;/h1&gt;
&lt;/div&gt;
&lt;div id=&quot;content&quot;&gt;
&lt;?// o conteúdo da sua view admin será renderizado dentro do $this-&gt;layout()-&gt;content ?&gt;
&lt;?=$this-&gt;layout()-&gt;content?&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p><strong>Index admin:</strong></p>
<pre class="brush: php">

&lt;?php

//application/admin/controllers/IndexController.php

class Admin_IndexController extends Zend_Controller_Action
{

public function indexAction()
{
$this-&gt;view-&gt;admin = &#039;Lorem Ipsum is simply dummy text of the printing and typesetting industry.&#039;;
}

}
</pre>
<p><strong>View admin:</strong></p>
<pre class="brush: php">

&lt;? //application/admin/views/scripts/index/index.phtml ?&gt;

&lt;h2&gt;
&lt;?=$this-&gt;admin?&gt;
&lt;/h2&gt;
</pre>
<p><strong>Resultado:</strong></p>
<p><a href="http://wellrocha.com.br/blog/wp-content/uploads/2009/09/zend-framework-renderizando-layouts-diferentes01.jpg" target="_blank"><img src="http://wellrocha.com.br/blog/wp-content/uploads/2009/09/zend-framework-renderizando-layouts-diferentes01-300x225.jpg" alt="zend-framework-renderizando-layouts-diferentes01" title="zend-framework-renderizando-layouts-diferentes01" width="300" height="225" class="alignnone size-medium wp-image-848" /></a></p>
<p><a href="http://wellrocha.com.br/blog/wp-content/uploads/2009/09/zend-framework-renderizando-layouts-diferentes02.jpg" target="_blank"><img src="http://wellrocha.com.br/blog/wp-content/uploads/2009/09/zend-framework-renderizando-layouts-diferentes02-300x225.jpg" alt="zend-framework-renderizando-layouts-diferentes02" title="zend-framework-renderizando-layouts-diferentes02" width="300" height="225" class="alignnone size-medium wp-image-849" /></a></p>
<p>Acabei com o trabalho <strong>chato</strong> de ficar reescrevendo código desnecessário, centralizo em um só arquivo partes do meu site que geralmente não tem alterações como <strong>header, sidebar e footer, </strong>enfim, você só tem a ganhar.</p>
<p><a href="http://wellrocha.com.br/blog/wp-content/uploads/2009/09/zend-framework-renderizando-layouts-diferentes.rar">Download do exemplo.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wellrocha.com.br/blog/2009/09/23/zend-framework-renderizando-layouts-diferentes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Dicas para manter o seu WordPress seguro</title>
		<link>http://wellrocha.com.br/blog/2009/09/16/dicas-para-manter-o-seu-wordpress-seguro/</link>
		<comments>http://wellrocha.com.br/blog/2009/09/16/dicas-para-manter-o-seu-wordpress-seguro/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 13:24:12 +0000</pubDate>
		<dc:creator>wellrocha</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Segurança]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://wellrocha.com.br/blog/?p=692</guid>
		<description><![CDATA[Não seria muito agradável acessar o seu blog e descobrir que ele foi invadido, o que podemos fazer é dificultar essa ação. Abaixo tem 2 ótimos sites que abordam sobre o assunto: Plugins do WordPress para garantir a segurança do seu blog 11 dicas e hacks vitais para proteger a área administrativa do WordPress Sempre [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://wellrocha.com.br/blog/wp-content/uploads/2009/09/wp-antivirus.jpg"><img class="size-full wp-image-704 aligncenter" title="wp-antivirus" src="http://wellrocha.com.br/blog/wp-content/uploads/2009/09/wp-antivirus.jpg" alt="wp-antivirus" width="250" height="262" /></a></p>
<p>Não seria muito agradável acessar o seu blog e descobrir que ele foi invadido, o que podemos fazer é dificultar essa ação.</p>
<p><span id="more-692"></span></p>
<p>Abaixo tem 2 ótimos sites que abordam sobre o assunto:</p>
<p><a title="Plugins do WordPress para garantir a segurança do seu blog" href="http://www.chrisb.com.br/blog/plugins-wordpress-garantir-a-seguranca-blog" target="_blank">Plugins do WordPress para garantir a segurança do seu blog</a></p>
<p><a title="11 dicas e hacks vitais para proteger a área administrativa do WordPress" href="http://www.pblog.com.br/2009/08/20/11-dicas-e-hacks-vitais-para-proteger-a-area-administrativa-do-wordpress" target="_blank">11 dicas e hacks vitais para proteger a área administrativa do WordPress</a></p>
<p>Sempre faço meus backups com o <a title="WP-DB-Backup" href="http://wordpress.org/extend/plugins/wp-db-backup" target="_blank">WP-DB-Backup</a> já restaurei e não tive problemas, além das dicas, não esqueça do tema, plugins e uploads.</p>
]]></content:encoded>
			<wfw:commentRss>http://wellrocha.com.br/blog/2009/09/16/dicas-para-manter-o-seu-wordpress-seguro/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>KingHost e minhas primeiras impressões</title>
		<link>http://wellrocha.com.br/blog/2009/09/12/king-host-e-minhas-primeiras-impressoes/</link>
		<comments>http://wellrocha.com.br/blog/2009/09/12/king-host-e-minhas-primeiras-impressoes/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 19:52:09 +0000</pubDate>
		<dc:creator>wellrocha</dc:creator>
				<category><![CDATA[off-topic]]></category>
		<category><![CDATA[Hospedagem]]></category>
		<category><![CDATA[Kinghost]]></category>

		<guid isPermaLink="false">http://wellrocha.com.br/blog/?p=663</guid>
		<description><![CDATA[Não satisfeito com a bosta da minha hospedagem, permaneci com o blog no ar até a data de vencimento. Nesse mês de setembro com o objetivo de fazer uma assinatura decente, segui conselhos de amigos, twitter, google e assinei com a KingHost um plano trimestral. Por que a KingHost ? Porque todas as reclamações foram [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://wellrocha.com.br/blog/wp-content/uploads/2009/09/king-host.jpg" target="_blank"><img class="alignleft size-full wp-image-664" title="KingHost" src="http://wellrocha.com.br/blog/wp-content/uploads/2009/09/king-host.jpg" alt="KingHost" width="185" height="171" /></a><span>Não satisfeito com a <strong><span style="text-decoration: line-through;">bosta da</span></strong> minha <strong>hospedagem</strong>, permaneci com o blog no ar até a data de vencimento. Nesse mês de setembro com o objetivo de fazer uma assinatura decente, segui conselhos de amigos, twitter, google e assinei com a <a title="HOSPEDAGEM DE SITES R$ 9.90 no Brasil 5 Gb HD e 200 Gb de TRÁFEGO, Sites, SUBVERSION, Domínios, 0800, Asp, Php, Firebird" href="http://www.kinghost.com.br/" target="_blank">KingHost</a> um plano trimestral.</span></p>
<p><span id="more-663"></span></p>
<p>Por que a <a title="HOSPEDAGEM DE SITES" href="http://www.kinghost.com.br/" target="_blank">KingHost</a> ?</p>
<p><span>Porque todas as reclamações foram respondidas no <a title="Reclame Aqui - Empresa KingHost" href="http://www.reclameaqui.com.br/indices/9633/kinghost-hospedagem-de-sites-ltda" target="_blank">reclame aqui</a> , o suporte via chat e via telefone foram ótimos, o preço da <strong>hospedagem </strong>e o que o plano <strong>linux </strong>oferece, é o que preciso.</span></p>
<p>O processo de cadastro pelo site foi <strong>very easy</strong>, o sistema de pagamento é rápido e fácil, na hora que submeti o formulário, já foi aprovado. Axei que iria me deparar com um <strong>cpanel</strong> cheio de informações, mas dessa vez foi diferente, o painel é simples e objetivo, fiz as configurações e tudo ficou funcionando <img src='http://wellrocha.com.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Não da para dizer que a <strong>KingHost</strong> é a melhor ou a pior, mas a tratativa que recebi, me motivou a assinar um plano trimestral e ver como são os seus serviços, se você tem dúvida, veja as suas necessidades e pesquise,  para não cair numa roubada.</p>
]]></content:encoded>
			<wfw:commentRss>http://wellrocha.com.br/blog/2009/09/12/king-host-e-minhas-primeiras-impressoes/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Começando com Ruby no Windows</title>
		<link>http://wellrocha.com.br/blog/2009/08/18/comecando-com-ruby-no-windows/</link>
		<comments>http://wellrocha.com.br/blog/2009/08/18/comecando-com-ruby-no-windows/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 13:04:48 +0000</pubDate>
		<dc:creator>wellrocha</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://wellrocha.com.br/blog/?p=579</guid>
		<description><![CDATA[Esse post é um faq bem básico. Se baseando na instalação do One-Click Installer. Você poderá escrever os seus códigos dentro do fxri (Interactive Ruby Help &#38; console), é um programa com uma interface gráfica, que já vem com documentação + um search engine implementado. Exemplo: Hello World. Percorrendo um array e mostrando o seu [...]]]></description>
			<content:encoded><![CDATA[<p>Esse post é um <strong>faq </strong>bem <strong>básico</strong>. </p>
<p>Se baseando na instalação do<a href="http://rubyforge.org/frs/?group_id=167" target="_blank"> One-Click Installer. </a></p>
<p><span id="more-579"></span></p>
<p>Você poderá escrever os seus códigos dentro do <strong>fxri (Interactive Ruby Help &amp; console)</strong>, é um programa com uma interface gráfica, que já vem com documentação + um search engine implementado.</p>
<p><strong>Exemplo:</strong></p>
<p><strong>Hello World.</strong><strong><br />
</strong></p>
<p><a href="http://wellrocha.com.br/blog/wp-content/uploads/2009/08/fxri01.jpg" target="_blank"><img class="alignnone size-medium wp-image-583" title="fxri01" src="http://wellrocha.com.br/blog/wp-content/uploads/2009/08/fxri01-300x200.jpg" alt="fxri01" width="300" height="200" /></a></p>
<p><strong>Percorrendo um array e mostrando o seu valor.</strong></p>
<p><a href="http://wellrocha.com.br/blog/wp-content/uploads/2009/08/fxri02.jpg" target="_blank"><img class="alignnone size-medium wp-image-585" title="fxri02" src="http://wellrocha.com.br/blog/wp-content/uploads/2009/08/fxri02-300x201.jpg" alt="fxri02" width="300" height="201" /></a></p>
<p>Se for fazer coisas simples use o <strong>fxri</strong>, se não escreva o seu código em um editor.</p>
<p><strong>Exemplo:</strong></p>
<p><strong>Fatorial.rb</strong></p>
<pre class="brush: ruby">
class Fatorial

attr_reader :num

# Construtor da Classe
def initialize (num)
@num = num
end

# Método para cálculo do fatorial
def calcular
total = 1

(1..@num).each {|fatorial| total  = total*fatorial   }

return total
end

end

fatorial = Fatorial::new(5)

puts  &quot;Fatorial do numero #{fatorial.num}: #{fatorial.calcular}&quot;
</pre>
<p>Agora é só entrar no prompt, ir até o diretório aonde foi salvo e digitar <strong>Fatorial.rb</strong></p>
<p><a href="http://wellrocha.com.br/blog/wp-content/uploads/2009/08/ruby-on-cmd.jpg" target="_blank"><img class="alignnone size-medium wp-image-599" title="ruby-on-cmd" src="http://wellrocha.com.br/blog/wp-content/uploads/2009/08/ruby-on-cmd-300x150.jpg" alt="ruby-on-cmd" width="300" height="150" /></a></p>
<p>Note que o resultado já aparece no prompt.</p>
<p>Com o ambiente configurado, tudo fica mais fácil, agora você já pode programar em ruby <img src='http://wellrocha.com.br/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://wellrocha.com.br/blog/2009/08/18/comecando-com-ruby-no-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework Trabalhando com Módulos</title>
		<link>http://wellrocha.com.br/blog/2009/07/20/zend-framework-trabalhando-com-modulos/</link>
		<comments>http://wellrocha.com.br/blog/2009/07/20/zend-framework-trabalhando-com-modulos/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 15:38:46 +0000</pubDate>
		<dc:creator>wellrocha</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://wellrocha.com.br/blog/?p=499</guid>
		<description><![CDATA[Quando estamos aprendendo a utilizar algum framework, sempre surgem algumas dúvidas, de início simples que muitas vezes não sabemos onde recorrer e acabamos perdendo um pouco de tempo. Trabalhar com módulos no Zend Framework é fácil, mas se você não tiver o hábito de ler a documentação, você vai nadar, nadar e morrer na praia. [...]]]></description>
			<content:encoded><![CDATA[<p>Quando estamos aprendendo a utilizar algum<strong> framework</strong>, sempre surgem algumas dúvidas, de início simples que muitas vezes não sabemos onde recorrer e acabamos perdendo um pouco de tempo.</p>
<p>Trabalhar com módulos no<strong> Zend Framework</strong> é fácil, mas se você não tiver o hábito de ler a <strong>documentação</strong>, você vai nadar, nadar e morrer na praia.</p>
<p><span id="more-499"></span></p>
<p>Organizando o seu projeto desta forma, você separa a estrutura da sua aplicação <strong>MVC</strong> e a reutiliza em diferentes<strong> front controllers.</strong></p>
<p><strong>Exemplo:</strong></p>
<p><a href="http://wellrocha.com.br/blog/wp-content/uploads/2009/07/zend-framework-modular-structure.jpg" target="_blank"><img src="http://wellrocha.com.br/blog/wp-content/uploads/2009/07/zend-framework-modular-structure.jpg" alt="zend-framework-modular-structure" title="Zend Framework Estrutura Modular" width="253" height="337" class="alignnone size-full wp-image-862" /></a></p>
<p>Agora que temos a nossa estrutura, devemos dizer para o <strong>bootstrap</strong> aonde ela esta.</p>
<p>Se baseando no <a title="Quick Start" href="http://framework.zend.com/demos/ZendFrameworkQuickstart-20090430.zip" target="_blank"><strong>Quick Start</strong></a> da Zend:</p>
<pre class="brush: php">

&lt;?php
//public/index.php

// Set the initial include_path. You may need to change this to ensure that
// Zend Framework is in the include_path; additionally, for performance
// reasons, it&#039;s best to move this to your web server configuration or php.ini
// for production.
set_include_path(implode(PATH_SEPARATOR, array(
realpath(dirname(__FILE__) . &#039;/../library&#039;),
get_include_path(),
)));

// Define path to application directory
defined(&#039;APPLICATION_PATH&#039;)
|| define(&#039;APPLICATION_PATH&#039;, realpath(dirname(__FILE__) . &#039;/../application&#039;));

// Define application environment
defined(&#039;APPLICATION_ENV&#039;)
|| define(&#039;APPLICATION_ENV&#039;, (getenv(&#039;APPLICATION_ENV&#039;) ? getenv(&#039;APPLICATION_ENV&#039;) : &#039;production&#039;));

/** Zend_Application */
require_once &#039;Zend/Application.php&#039;;

// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . &#039;/default/configs/application.ini&#039;
);
try {
$application-&gt;bootstrap()
-&gt;run();
}
catch (Exception $exception) {?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;Zend Framework Default Application&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;An error occurred &lt;/h1&gt;
&lt;h3&gt;Exception information:&lt;/h3&gt;
&lt;p&gt;
&lt;b&gt;Message:&lt;/b&gt; &lt;?=$exception-&gt;getMessage() ?&gt;
&lt;/p&gt;

&lt;h3&gt;Stack trace:&lt;/h3&gt;
&lt;pre&gt;&lt;?=$exception-&gt;getTraceAsString() ?&gt;&lt;/pre&gt;
&lt;/body&gt;
&lt;/html&gt;
&lt;?
}
</pre>
<p><strong>/public/</strong><strong>index.php</strong> carrega o nosso arquivo de configuração <strong>application.ini</strong>, preste atenção, nele dizemos aonde esta o nosso <strong>bootstrap.php</strong>.</p>
<p><strong>application.ini</strong></p>
<pre class="brush: php">

[production]
;application/default/configs/application.ini

; PHP settings we want to initialize
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
debug = 1

; Indicate the path and classname of the bootstrap
bootstrap.path = APPLICATION_PATH &quot;/Bootstrap.php&quot;
bootstrap.class = &quot;Bootstrap&quot;

[staging : production]
; Were you to have a &#039;staging&#039; environment, you could customize application
; settings here

[testing : production]
; For testing, we want to display errors and use a different database
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
; For development, we want to display errors and use a different database
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
</pre>
<p>No <strong>bootstrap.php</strong> definimos o path de cada módulo, segue abaixo:</p>
<pre class="brush: php">

&lt;?php

//application/Bootstrap.php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected $_config;
protected $_frontController;

protected function _initConfig()
{
//Carrega meu arquivo de configuração application.ini com alguns parâmetros.
$this-&gt;_config = new Zend_Config_Ini(APPLICATION_PATH . &#039;/default/configs/application.ini&#039;);

//Registra essa configuração como global.
//Para recuperar utilize  Zend_Registry::get(&#039;config&#039;);
Zend_Registry::set(&#039;config&#039;, $this-&gt;_config);
}

protected function _initFrontController()
{
// Recebo uma instância do Zend_Controller_Front::getInstance();
$this-&gt;_frontController = Zend_Controller_Front::getInstance();

/*
Você deve utilizar o setControllerDirectory, serve para dizer aonde estão
os seus controladores, com essa configuração
podemos renderizar módulos diferentes, basta dizer o path.
*/
$this-&gt;_frontController-&gt;setControllerDirectory(array(
&#039;default&#039; =&gt; APPLICATION_PATH . &#039;/default/controllers&#039;,
&#039;admin&#039;   =&gt; APPLICATION_PATH . &#039;/admin/controllers&#039;
));

/*
Somente no controlador default, não é preciso digitar o name space.
No caso do admin, que precisamos digitar, você deve escrever suas classes
desta forma:

class Admin_IndexController extends Zend_Controller_Action
*/
}

public function run()
{
/*
Dispatch faz um processo que pega o objeto de requisição,
Zend_Controller_Request_Abstract Exrai o nome do modulo, controller,
action e parâmetros opcionais.
*/

$this-&gt;_frontController-&gt;dispatch();
}
}
</pre>
<p>Agora é só criar os seus <strong>models, controllers e views</strong>, lembrando que você deve respeitar a regra do <strong>name space</strong>.</p>
<p><strong>Exemplo simples:</strong></p>
<p><strong>admin controller</strong></p>
<pre class="brush: php">

&lt;?php

//application/admin/controllers/IndexController.php

class Admin_IndexController extends Zend_Controller_Action
{

public function indexAction()
{
$this-&gt;view-&gt;admin = &#039;Módulo Admin !&#039;;
}

}
</pre>
<p><strong>admin view</strong></p>
<pre class="brush: php">

&lt;?//application/admin/views/scripts/index/index.phtml?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;Zend Framework Trabalhando com Módulos&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;&lt;?=$this-&gt;admin?&gt;&lt;/h1&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p><strong>default controller, lembrando que  não é obrigatório digitar o name space.</strong></p>
<pre class="brush: php">

&lt;?php

//application/default/controllers/IndexController.php

class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
$this-&gt;view-&gt;default = &#039;Módulo Default !&#039;;
}
}
</pre>
<p><strong>default view</strong></p>
<pre class="brush: php">

&lt;?//application/default/views/scripts/index/index.phtml?&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;Zend Framework Trabalhando com Módulos&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;&lt;?=$this-&gt;default?&gt;&lt;/h1&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p><strong>Resultado:</strong></p>
<p><a href="http://wellrocha.com.br/blog/wp-content/uploads/2009/07/zend-framework-trabalhando-com-modulos01.jpg" target="_blank"><img src="http://wellrocha.com.br/blog/wp-content/uploads/2009/07/zend-framework-trabalhando-com-modulos01-300x215.jpg" alt="zend-framework-trabalhando-com-modulos01" title="zend-framework-trabalhando-com-modulos01" width="300" height="215" class="alignnone size-medium wp-image-859" /></a></p>
<p><a href="http://wellrocha.com.br/blog/wp-content/uploads/2009/07/zend-framework-trabalhando-com-modulos02.jpg" target="_blank"><img src="http://wellrocha.com.br/blog/wp-content/uploads/2009/07/zend-framework-trabalhando-com-modulos02-300x215.jpg" alt="zend-framework-trabalhando-com-modulos02" title="zend-framework-trabalhando-com-modulos02" width="300" height="215" class="alignnone size-medium wp-image-860" /></a></p>
<p>Você garante a organização do projeto, fica melhor para dar manutenção, é uma estrutura convencional, que não foge da estrutura de diretórios do <strong>Zend Framework.</strong></p>
<p><a href="http://wellrocha.com.br/blog/wp-content/uploads/2009/07/zend-framework-trabalhando-com-modulos.rar">Download do exemplo.</a></p>
<p><strong>Fontes:</strong></p>
<p><a href="http://framework.zend.com/manual/en/zend.controller.modular.html" target="_blank">http://framework.zend.com/manual/en/zend.controller.modular.html</a></p>
<p><a href="http://framework.zend.com/manual/en/zend.controller.dispatcher.html" target="_blank">http://framework.zend.com/manual/en/zend.controller.dispatcher.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wellrocha.com.br/blog/2009/07/20/zend-framework-trabalhando-com-modulos/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Zend Framework erro no apache ao usar Zend_Db_Table</title>
		<link>http://wellrocha.com.br/blog/2009/05/25/zend-framework-erro-no-apache-ao-usar-zend_db_table/</link>
		<comments>http://wellrocha.com.br/blog/2009/05/25/zend-framework-erro-no-apache-ao-usar-zend_db_table/#comments</comments>
		<pubDate>Mon, 25 May 2009 23:58:19 +0000</pubDate>
		<dc:creator>wellrocha</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://wellrocha.com.br/blog/?p=465</guid>
		<description><![CDATA[Não se preocupe, esse erro não é do ZendFramework ou da forma que você o configurou (ufa !). É um bug na conexão MySql/PHP PDO on Xampp 1.7 Segue abaixo a solução: Faça download do arquivo: http://windows.php.net/downloads/snaps/php-5.2-win32-VC6-x86-latest.zip Descompacte e copie o arquivo libmysql.dll, cole dentro da pasta xampp\apache\bin e xampp\php, agora é só reiniciar o [...]]]></description>
			<content:encoded><![CDATA[<p>Não se preocupe, esse erro não é do <strong>ZendFramework</strong> ou da forma que você o configurou (ufa !). É um bug na conexão <strong>MySql/PHP PDO on Xampp 1.7</strong></p>
<p><span id="more-465"></span></p>
<p>Segue abaixo a solução:</p>
<p>Faça download do arquivo: <a class="postlink" href="http://windows.php.net/downloads/snaps/php-5.2-win32-VC6-x86-latest.zip">http://windows.php.net/downloads/snaps/php-5.2-win32-VC6-x86-latest.zip</a></p>
<p>Descompacte e copie o arquivo <strong>libmysql.dll</strong>, cole dentro da pasta <strong>xampp\apache\bin </strong>e <strong>xampp\php</strong>, agora é só reiniciar o servidor.</p>
<p><strong>Fonte:</strong> <a class="postlink" href="http://www.apachefriends.org/f/viewtopic.php?f=16&amp;t=32617">http://www.apachefriends.org/f/viewtopic.php?f=16&amp;t=32617</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wellrocha.com.br/blog/2009/05/25/zend-framework-erro-no-apache-ao-usar-zend_db_table/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurando o Zend Framework</title>
		<link>http://wellrocha.com.br/blog/2009/05/18/configurando-o-zend-framework/</link>
		<comments>http://wellrocha.com.br/blog/2009/05/18/configurando-o-zend-framework/#comments</comments>
		<pubDate>Mon, 18 May 2009 14:51:51 +0000</pubDate>
		<dc:creator>wellrocha</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://wellrocha.com.br/blog/?p=437</guid>
		<description><![CDATA[Acho que muitas pessoas tentam configurar o ZendFramework para funcionar localmente e de primeira não da certo e você acaba desistindo. Axei uma solução simples para resolver o meu problema e de muitos, testei no xampp e funcionou normalmente. Faça download do QuickStart no site. Extraia o esqueleto da aplicação dentro da pasta htdocs. Abra [...]]]></description>
			<content:encoded><![CDATA[<p>Acho que muitas pessoas tentam configurar o <strong>ZendFramework </strong>para funcionar localmente e de primeira não da certo e você acaba desistindo.</p>
<p>Axei uma solução simples para resolver o meu problema e de muitos, testei no xampp e funcionou normalmente.</p>
<p><span id="more-437"></span></p>
<p>Faça download do <a href="http://framework.zend.com/demos/ZendFrameworkQuickstart-20090430.zip">QuickStart</a> no site.</p>
<p>Extraia o esqueleto da aplicação dentro da pasta htdocs.</p>
<p>Abra o README.txt e <span style="text-decoration: line-through;">leia</span> copie as configurações do <strong>VirtualHost</strong>, depois abra  <strong>apache-&gt;conf-&gt;httpd.conf</strong>, verifique se já não existe uma configuração de <strong>VirtualHost</strong>, no meu caso estava comentado, vá no final do arquivo e cole a nova configuração. Agora é com você, faça os acertos necessários.</p>
<pre class="brush: php">

Configuração README:

&lt;VirtualHost *:80&gt;

ServerAdmin matthew@zend.com

DocumentRoot &lt;PATH_TO_QUICKSTART&gt;/public

ServerName quickstart

&lt;Directory &lt;PATH_TO_QUICKSTART&gt;/public&gt;

DirectoryIndex index.php

AllowOverride All

Order allow,deny

Allow from all

&lt;/Directory&gt;

&lt;/VirtualHost&gt;
</pre>
<pre class="brush: php">

#Configuração ZendFramework

&lt;VirtualHost *:80&gt;

ServerAdmin seuemail@seuemail

DocumentRoot /xampp/htdocs/public

ServerName localhost

&lt;Directory /xampp/htdocs/public&gt;

DirectoryIndex index.php

AllowOverride All

Order allow,deny

Allow from all

&lt;/Directory&gt;

&lt;/VirtualHost&gt;
</pre>
<p><strong>Resultado:</strong></p>
<p><a href="http://wellrocha.com.br/blog/wp-content/uploads/2009/05/zend-framework-quickstart.jpg" target="_blank"><img src="http://wellrocha.com.br/blog/wp-content/uploads/2009/05/zend-framework-quickstart-300x225.jpg" alt="zend-framework-quickstart" title="Zend Framework QuickStart" width="300" height="225" class="alignnone size-medium wp-image-865" /></a></p>
<p>Agora você não precisa adicionar o public na url, o Virtual Host está cuidando disso para nós.</p>
]]></content:encoded>
			<wfw:commentRss>http://wellrocha.com.br/blog/2009/05/18/configurando-o-zend-framework/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
