<?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>Marcelo Rodrigues &#187; Zend Framework</title>
	<atom:link href="http://www.marcelomx.com/tag/zend-framework/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.marcelomx.com</link>
	<description>Web Developer</description>
	<lastBuildDate>Tue, 03 Aug 2010 02:26:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Frameworks, padrões de projetos e testes.</title>
		<link>http://www.marcelomx.com/2009/11/02/frameworks-padroes-de-projetos-e-testes/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=frameworks-padroes-de-projetos-e-testes</link>
		<comments>http://www.marcelomx.com/2009/11/02/frameworks-padroes-de-projetos-e-testes/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 00:55:07 +0000</pubDate>
		<dc:creator>Marcelo Rodrigues</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[testes]]></category>
		<category><![CDATA[tests]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.marcelomx.com/?p=66</guid>
		<description><![CDATA[Desde a última vez que escrevi neste humilde blog, minha experiência com padrões de projetos e desenvolvimento orientado a testes era, digamos, bem básica e insuficiente para arriscar opiniões sobre conceitos, técnicas, ferramentas etc. Hoje posso dizer que o conhecimento sobre esses temas é suficiente para poder arriscar palpites e algumas dicas aos menos experientes [...]]]></description>
			<content:encoded><![CDATA[<p>Desde a última vez que escrevi neste humilde blog, minha experiência com padrões de projetos e desenvolvimento orientado a testes era, digamos, bem básica e insuficiente para arriscar opiniões sobre conceitos, técnicas, ferramentas etc.</p>
<p>Hoje posso dizer que o conhecimento sobre esses temas é suficiente para poder arriscar palpites e algumas dicas aos menos experientes no assunto. Relacionar o desenvolvimento orientado a testes (tdd) aos padrões de projeto (design patterns) é quase como relacionar pão com manteiga, café com leite, arroz com feijão. Enfim, combinações que você sabe que não andam o tempo inteiro lado a lado, mas que vez ou outra acabam se encontrando.</p>
<p>Quanto a frameworks, não posso dizer que o mesmo conhecimento que eu tinha foi tão modificado. O que se alterou foi apenas a interpretação acerca das características e recursos dos frameworks que sempre tive mais contato e trabalho atualmente: Symfony e Zend Framework.</p>
<p>Com a bagagem de conhecimento que adquiri nesse último ano, trabalhando mais com arquitetura de software do que desenvolvimento para web (html, js, css etc) propriamente dito, posso dizer que já dá para começar a rascunhas alguns textos, artigos e tutorias sobre padrões, testes e frameworks de forma mais ampl</p>
<p>É esperar e ver no que dá <img src='http://www.marcelomx.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

	Tags: <a href="http://www.marcelomx.com/tag/design-patterns/" title="Design Patterns" rel="tag nofollow">Design Patterns</a>, <a href="http://www.marcelomx.com/tag/framework/" title="Framework" rel="tag nofollow">Framework</a>, <a href="http://www.marcelomx.com/category/geral/" title="Geral" rel="tag nofollow">Geral</a>, <a href="http://www.marcelomx.com/tag/mvc/" title="MVC" rel="tag nofollow">MVC</a>, <a href="http://www.marcelomx.com/tag/symfony/" title="symfony" rel="tag nofollow">symfony</a>, <a href="http://www.marcelomx.com/tag/tdd/" title="tdd" rel="tag nofollow">tdd</a>, <a href="http://www.marcelomx.com/tag/testes/" title="testes" rel="tag nofollow">testes</a>, <a href="http://www.marcelomx.com/tag/tests/" title="tests" rel="tag nofollow">tests</a>, <a href="http://www.marcelomx.com/tag/zend-framework/" title="Zend Framework" rel="tag nofollow">Zend Framework</a><br />

	<h4>Posts relacionados</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.marcelomx.com/2010/08/02/phphederal-desenvolvimento-orientado-a-testes-com-php/" title="PHPHEDERAL &#8211; Desenvolvimento Orientado a Testes com PHP (2 August 2010)">PHPHEDERAL &#8211; Desenvolvimento Orientado a Testes com PHP</a> (0)</li>
	<li><a href="http://www.marcelomx.com/2009/12/28/iniciando-com-desenvolvimento-orientado-a-testes-com-php/" title="Iniciando com desenvolvimento orientado a testes com PHP (28 December 2009)">Iniciando com desenvolvimento orientado a testes com PHP</a> (1)</li>
	<li><a href="http://www.marcelomx.com/2008/12/30/escrevendo-urls-no-zend-framework/" title="Escrevendo URLs no Zend Framework (30 December 2008)">Escrevendo URLs no Zend Framework</a> (4)</li>
	<li><a href="http://www.marcelomx.com/2008/11/20/zend-framework-17/" title="Zend Framework 1.7 (20 November 2008)">Zend Framework 1.7</a> (1)</li>
	<li><a href="http://www.marcelomx.com/2008/09/05/zead-project/" title="Zead Project (5 September 2008)">Zead Project</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.marcelomx.com/2009/11/02/frameworks-padroes-de-projetos-e-testes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Escrevendo URLs no Zend Framework</title>
		<link>http://www.marcelomx.com/2008/12/30/escrevendo-urls-no-zend-framework/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=escrevendo-urls-no-zend-framework</link>
		<comments>http://www.marcelomx.com/2008/12/30/escrevendo-urls-no-zend-framework/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 18:40:07 +0000</pubDate>
		<dc:creator>Marcelo Rodrigues</dc:creator>
				<category><![CDATA[Framework]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Helper]]></category>
		<category><![CDATA[Url]]></category>
		<category><![CDATA[View]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.marcelomx.com/?p=36</guid>
		<description><![CDATA[O Zend Framework, assim com os demais frameworks que utilizam o padrão MVC, possui uma estrutura de roteamento para mapear e direcionar corretamente os seus controles e ações de acordo com determinada url requisitada pela aplicação. Também como os demais, possibilita a escrita de urls para estes controles na camada de visualização quando necessário, através [...]]]></description>
			<content:encoded><![CDATA[<p>O Zend Framework, assim com os demais frameworks que utilizam o padrão MVC, possui uma estrutura de roteamento para mapear e direcionar corretamente os seus controles e ações de acordo com determinada url requisitada pela aplicação. Também como os demais, possibilita a escrita de urls para estes controles na camada de visualização quando necessário, através dos &#8220;helpers&#8221;.</p>
<p>Infelizmente, o helper responsável pela escrita dessas urls ainda é bastante imaturo. A forma como deve ser feita esta tarefa é trabalhosa, chata e principalmente, improdutiva. Só o fato de ter de indicar &#8220;TODOS&#8221; os parâmetros para a escrita da URL em uma estrutura de array associativa soa como um paradoxo, já que o próprio framework possui mecanismos que fazem o parser na url requisitada, identificando os parâmetros necessários e passando-os ao roteador. Ou seja, é um retrabalho e não um reúso. Exemplo de uma url escrita da forma padrão em um arquivo de template.</p>
<pre>&lt;?php</pre>
<pre>echo $this-&gt;url(array(
 	'controller' =&gt; 'users',
 	'action'     =&gt; 'edit',
 	'id'         =&gt; 25
 	));</pre>
<pre>?&gt;</pre>
<p>A saída do exemplo será: /users/edit/id/25. Analisando a url, seria mais fácil simplesmente escrever da seguinte forma:</p>
<pre>&lt;?php</pre>
<pre>echo "/users/edit/id/25";</pre>
<pre>?&gt;</pre>
<p>Desta forma o resultado é mais rápido, porém, você perde em termos controle, já que a escrita é manual e se você alterar o nome do controle ou da ação, a url passará a ser inválida (a não ser que você use roteadores customizados).</p>
<p>A maioria dos frameworks, como Symfony, Cake etc, implementam tanto a forma de escrita com os parâmetros em um array, quanto uma string contendo a url desejada, fazendo a conversão automática dos mesmos para o formato padrão do framework ou da aplicação. O Symfony, por exemplo, implementa a escrita da seguinte forma:</p>
<pre>&lt;?php echo url_for('users/edit?id='. 25); ?&gt;</pre>
<p>O Symfony automaticamente converterá isso para o formato /users/edit/id/25. Considero essa forma muito mais elegante e produtiva, pois está mais próximo da realidade das urls &#8220;dinâmicas&#8221;. No entanto, se houver mais parâmetros, a coisa já começa a complicar.</p>
<p>Voltando a forma como o Zend Framework implementa este recurso, já se sabe que ele não é tão flexível assim, então é necessário criar um helper na camada de visualização para esta tarefa. Podemos inclusive, aproveitar o que já foi desenvolvido e é padrão do framework e encontra-se na pasta: Zend/View/Helper/Url.php.</p>
<pre>#Zend/View/Helper/Url.php</pre>
<pre>class Zend_View_Helper_Url extends Zend_View_Helper_Abstract
 {
 	public function url(array $urlOptions = array(), $name = null, $reset = false, $encode = true)
 	{
 	$router = Zend_Controller_Front::getInstance()-&gt;getRouter();
 	return $router-&gt;assemble($urlOptions, $name, $reset, $encode);
 	}
 }</pre>
<p>Crie um arquivo de helper com o nome que você quiser e o coloque no diretório de helpers da sua aplicação. O meu eu chamei de MyUrl.php. Crie neste arquivo a classe Zend_View_Helper_MyUrl. Dentro da classe, crie o método myUrl. É importante ressaltar que o nome do helper deve estar no nome do arquivo, como sufixo do nome da classe e como método principal, que é avaliado e chamado pelo objeto Zend_View ao ser requisitado no template.</p>
<p>O método myUrl terá os mesmos parâmetros do helper Url, com exceção que o primeiro parametro poderá tanto ser uma string quanto um array, então não é necessário tipá-la.</p>
<p>A classe então terá a seguinte estrutura.</p>
<pre>&lt;?php</pre>
<pre>require_once 'Zend/View/Helper/Abstract.php';</pre>
<pre>class Zend_View_Helper_MyUrl extends Zend_View_Helper_Abstract
 	{</pre>
<pre> /**
 	* Return the URL
 	*
 	* @param string|array $urlOptions
 	* @param string       $name
 	* @param bool         $reset
 	* @param bool         $encode
 	* @return string
 	*/
 	public function myUrl($urlOptions, $name = null, $reset = false, $encode = true)
 	{
 	$front  = Zend_Controller_Front::getInstance();
 	$router = $front-&gt;getRouter();</pre>
<pre> if (is_string($urlOptions)) {
 	$urlOptions = '/'. ltrim($urlOptions, '/'); // Case the first character is a '?
 	$request = new Zend_Controller_Request_Http(); // Creates a cleaned instance of request http
 	$request-&gt;setBaseUrl($front-&gt;getBaseUrl());
 	$request-&gt;setRequestUri($urlOptions);
 	$route = $router-&gt;route($request); // Return the request route with params modifieds
 	$urlOptions = $route-&gt;getParams();
 	}
 	return  $router-&gt;assemble((array) $urlOptions, $name, $reset, $encode);
 	}
 	}</pre>
<p>Salvo o helper, é só utilizá-lo. Agora ele suporta todos os formatos:</p>
<pre>&lt;?php echo $this-&gt;myUrl(array(
 	'controller'=&gt; 'users,
 	'action'    =&gt; 'edit,
 	'id'        =&gt; 25
 	)); ?&gt;</pre>
<p>ou</p>
<pre>&lt;?php echo $this-&gt;myUrl('users/edit?id=25'); ?&gt;</pre>
<p>ou</p>
<pre>&lt;?php echo $this-&gt;myUrl('users/edit/id/25'); ?&gt;</pre>
<p>Muito mais simples, elegante e bem produtivo!</p>
<p>É possível ainda utilizar os outros parâmetros do helper padrão, como o nome do roteador a ser utilizado para formatar a url, se o mesmo vai ou não utilizar a url base ou somente a partir da atual e se a url será codificada ou não &#8211; bastante útil para utilizar como valor de outros parametros. <img src='http://www.marcelomx.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Até a próxima.</p>

	Tags: <a href="http://www.marcelomx.com/category/framework/" title="Framework" rel="tag nofollow">Framework</a>, <a href="http://www.marcelomx.com/tag/framework/" title="Framework" rel="tag nofollow">Framework</a>, <a href="http://www.marcelomx.com/tag/helper/" title="Helper" rel="tag nofollow">Helper</a>, <a href="http://www.marcelomx.com/category/php/" title="Php" rel="tag nofollow">Php</a>, <a href="http://www.marcelomx.com/tag/php/" title="Php" rel="tag nofollow">Php</a>, <a href="http://www.marcelomx.com/category/tecnologia/" title="Tecnologia" rel="tag nofollow">Tecnologia</a>, <a href="http://www.marcelomx.com/tag/url/" title="Url" rel="tag nofollow">Url</a>, <a href="http://www.marcelomx.com/tag/view/" title="View" rel="tag nofollow">View</a>, <a href="http://www.marcelomx.com/tag/zend/" title="Zend" rel="tag nofollow">Zend</a>, <a href="http://www.marcelomx.com/tag/zend-framework/" title="Zend Framework" rel="tag nofollow">Zend Framework</a><br />

	<h4>Posts relacionados</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.marcelomx.com/2010/08/02/phphederal-desenvolvimento-orientado-a-testes-com-php/" title="PHPHEDERAL &#8211; Desenvolvimento Orientado a Testes com PHP (2 August 2010)">PHPHEDERAL &#8211; Desenvolvimento Orientado a Testes com PHP</a> (0)</li>
	<li><a href="http://www.marcelomx.com/2009/12/28/iniciando-com-desenvolvimento-orientado-a-testes-com-php/" title="Iniciando com desenvolvimento orientado a testes com PHP (28 December 2009)">Iniciando com desenvolvimento orientado a testes com PHP</a> (1)</li>
	<li><a href="http://www.marcelomx.com/2009/11/02/frameworks-padroes-de-projetos-e-testes/" title="Frameworks, padrões de projetos e testes. (2 November 2009)">Frameworks, padrões de projetos e testes.</a> (3)</li>
	<li><a href="http://www.marcelomx.com/2008/11/20/zend-framework-17/" title="Zend Framework 1.7 (20 November 2008)">Zend Framework 1.7</a> (1)</li>
	<li><a href="http://www.marcelomx.com/2008/09/05/zead-project/" title="Zead Project (5 September 2008)">Zead Project</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.marcelomx.com/2008/12/30/escrevendo-urls-no-zend-framework/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Zead Project</title>
		<link>http://www.marcelomx.com/2008/09/05/zead-project/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=zead-project</link>
		<comments>http://www.marcelomx.com/2008/09/05/zead-project/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 19:51:22 +0000</pubDate>
		<dc:creator>Marcelo Rodrigues</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[E-Learning]]></category>
		<category><![CDATA[EAD]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Zead]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.marcelomx.com/?p=32</guid>
		<description><![CDATA[Estou iniciando um projeto pessoal, o Zead, uma aplicação para construção e gerenciamento de cursos para educação a distância em formato hipertextual (HTML), através de interface web.  O projeto está hospedado no Google Code sob a licença BSD (provisoriamente) e Creative Commons.  Ah, se o nome lhe parece estranho ou familiar, é porque é mesmo. [...]]]></description>
			<content:encoded><![CDATA[<p>Estou iniciando um projeto pessoal, o <a title="Zead Project" href="http://code.google.com/p/zead/" target="_blank">Zead</a>, uma aplicação para construção e gerenciamento de cursos para educação a distância em formato hipertextual (HTML), através de interface web. </p>
<p>O projeto está hospedado no <a href="http://code.google.com/p/zead/">Google Code </a>sob a licença BSD (provisoriamente) e Creative Commons. </p>
<p>Ah, se o nome lhe parece estranho ou familiar, é porque é mesmo. A letra Z é de <a title="Zend Framework" href="http://framework.zend.com" target="_blank">Zend Framework</a>, já que o projeto é baseado todo nele, e EAD, de educação a distância. </p>
<p>Em breve mais detalhes do projeto. <img src='http://www.marcelomx.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

	Tags: <a href="http://www.marcelomx.com/tag/e-learning/" title="E-Learning" rel="tag nofollow">E-Learning</a>, <a href="http://www.marcelomx.com/tag/ead/" title="EAD" rel="tag nofollow">EAD</a>, <a href="http://www.marcelomx.com/category/geral/" title="Geral" rel="tag nofollow">Geral</a>, <a href="http://www.marcelomx.com/tag/php/" title="Php" rel="tag nofollow">Php</a>, <a href="http://www.marcelomx.com/tag/zead/" title="Zead" rel="tag nofollow">Zead</a>, <a href="http://www.marcelomx.com/tag/zend-framework/" title="Zend Framework" rel="tag nofollow">Zend Framework</a><br />

	<h4>Posts relacionados</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.marcelomx.com/2010/08/02/phphederal-desenvolvimento-orientado-a-testes-com-php/" title="PHPHEDERAL &#8211; Desenvolvimento Orientado a Testes com PHP (2 August 2010)">PHPHEDERAL &#8211; Desenvolvimento Orientado a Testes com PHP</a> (0)</li>
	<li><a href="http://www.marcelomx.com/2009/12/28/iniciando-com-desenvolvimento-orientado-a-testes-com-php/" title="Iniciando com desenvolvimento orientado a testes com PHP (28 December 2009)">Iniciando com desenvolvimento orientado a testes com PHP</a> (1)</li>
	<li><a href="http://www.marcelomx.com/2009/11/02/frameworks-padroes-de-projetos-e-testes/" title="Frameworks, padrões de projetos e testes. (2 November 2009)">Frameworks, padrões de projetos e testes.</a> (3)</li>
	<li><a href="http://www.marcelomx.com/2008/12/30/escrevendo-urls-no-zend-framework/" title="Escrevendo URLs no Zend Framework (30 December 2008)">Escrevendo URLs no Zend Framework</a> (4)</li>
	<li><a href="http://www.marcelomx.com/2008/07/24/zend-framework-16-rc1/" title="Zend Framework 1.6 RC1 (24 July 2008)">Zend Framework 1.6 RC1</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.marcelomx.com/2008/09/05/zead-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Framework 1.6 RC1</title>
		<link>http://www.marcelomx.com/2008/07/24/zend-framework-16-rc1/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=zend-framework-16-rc1</link>
		<comments>http://www.marcelomx.com/2008/07/24/zend-framework-16-rc1/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 14:49:28 +0000</pubDate>
		<dc:creator>Marcelo Rodrigues</dc:creator>
				<category><![CDATA[Framework]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.marcelomx.com/?p=29</guid>
		<description><![CDATA[Já está disponível a versão 1.6rc1 do Zend Framework. Olhando rapidamente as mudanças desta nova versão, considerei algumas como excelentes e até demoradas para um framework maduro como o Zend. Nos meus últimos trabalhos, o adotei como o framework oficial para aplicações MVC, e foi uma grande experiência. Fiquei muito satisfeito tanto com o resultado [...]]]></description>
			<content:encoded><![CDATA[<p>Já está disponível a versão <a title="Zend Framework" href="http://devzone.zend.com/article/3712-Zend-Framework-1.6-Release-Candidate-1-now-available">1.6rc1</a> do <a title="Zend Framework" href="http://framework.zend.com/">Zend Framework</a>. Olhando rapidamente as mudanças desta nova versão, considerei algumas como excelentes e até demoradas para um framework maduro como o Zend. Nos meus últimos trabalhos, o adotei como o framework oficial para aplicações MVC, e foi uma grande experiência. Fiquei muito satisfeito tanto com o resultado final quanto com a produtividade.</p>
<p>Mesmo assim, tive algumas necessidades de implementação, principalmente aquelas relacionadas a banco de dados, que acabei desenvolvendo eu mesmo. Não foi uma tarefa tão difícil, já que o framework oferece os recursos de plugins/helpers, bastando estender as classes nativas do framework e implementar as funcionalidades que necessitava.</p>
<p>A paginação de resultados do banco tanto na camada de visualização quanto na própria abstração do banco e o envio de arquivos por upload foram os recurso que eu precisei implementar na unha mesmo. Para minha grata surpresa, esta nova versão do framework traz dois componentes que fazem exatamente essas tarefas, o Paginator e File Transfer.</p>
<p>Mas como bom beta tester que sou, já vou começar a explorar as novas mudanças até o lançamento da versão final, que deve sair até o fim do ano, presumo.</p>

	Tags: <a href="http://www.marcelomx.com/category/framework/" title="Framework" rel="tag nofollow">Framework</a>, <a href="http://www.marcelomx.com/tag/framework/" title="Framework" rel="tag nofollow">Framework</a>, <a href="http://www.marcelomx.com/tag/mvc/" title="MVC" rel="tag nofollow">MVC</a>, <a href="http://www.marcelomx.com/tag/php/" title="Php" rel="tag nofollow">Php</a>, <a href="http://www.marcelomx.com/tag/zend/" title="Zend" rel="tag nofollow">Zend</a>, <a href="http://www.marcelomx.com/tag/zend-framework/" title="Zend Framework" rel="tag nofollow">Zend Framework</a><br />

	<h4>Posts relacionados</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.marcelomx.com/2010/08/02/phphederal-desenvolvimento-orientado-a-testes-com-php/" title="PHPHEDERAL &#8211; Desenvolvimento Orientado a Testes com PHP (2 August 2010)">PHPHEDERAL &#8211; Desenvolvimento Orientado a Testes com PHP</a> (0)</li>
	<li><a href="http://www.marcelomx.com/2009/12/28/iniciando-com-desenvolvimento-orientado-a-testes-com-php/" title="Iniciando com desenvolvimento orientado a testes com PHP (28 December 2009)">Iniciando com desenvolvimento orientado a testes com PHP</a> (1)</li>
	<li><a href="http://www.marcelomx.com/2009/11/02/frameworks-padroes-de-projetos-e-testes/" title="Frameworks, padrões de projetos e testes. (2 November 2009)">Frameworks, padrões de projetos e testes.</a> (3)</li>
	<li><a href="http://www.marcelomx.com/2008/12/30/escrevendo-urls-no-zend-framework/" title="Escrevendo URLs no Zend Framework (30 December 2008)">Escrevendo URLs no Zend Framework</a> (4)</li>
	<li><a href="http://www.marcelomx.com/2008/11/20/zend-framework-17/" title="Zend Framework 1.7 (20 November 2008)">Zend Framework 1.7</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.marcelomx.com/2008/07/24/zend-framework-16-rc1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desenvolvendo no padrão MVC com Zend Framework</title>
		<link>http://www.marcelomx.com/2007/04/26/desenvolvendo-no-padrao-mvc-com-zend-framework/#utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=desenvolvendo-no-padrao-mvc-com-zend-framework</link>
		<comments>http://www.marcelomx.com/2007/04/26/desenvolvendo-no-padrao-mvc-com-zend-framework/#comments</comments>
		<pubDate>Thu, 26 Apr 2007 21:54:17 +0000</pubDate>
		<dc:creator>Marcelo Rodrigues</dc:creator>
				<category><![CDATA[Framework]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Tecnologia]]></category>
		<category><![CDATA[Cake]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Model]]></category>
		<category><![CDATA[Model Import]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Scaffold]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://marcelomx.wordpress.com/2007/04/26/desenvolvendo-no-padrao-mvc-com-zend-framework/</guid>
		<description><![CDATA[Quando se fala de desenvolvimento no padrão MVC com o PHP a primeira palavra que se vém a mente é framework. E pesquisando sobre essa palavra, iremos encontrar uma vasta lista de ambientes. Desta lista, já testei o Symfony, Cake, CodeIgniter e QCodo. Até agora, nenhum satisfez minhas necessidades completamente, talvez por serem fechados ou [...]]]></description>
			<content:encoded><![CDATA[<p>Quando se fala de desenvolvimento no padrão MVC com o PHP a primeira palavra que se vém a mente é framework. E pesquisando sobre essa palavra, iremos encontrar uma vasta lista de ambientes. Desta lista, já testei o Symfony, Cake, CodeIgniter e QCodo. Até agora, nenhum satisfez minhas necessidades completamente, talvez por serem fechados ou pesados demais, esta é minha a opinião. Mas isso até eu começar a estudar o Zend framework, que não é exatamente  um framework, mas sim um conjunto de componentes prontos que oferecem funcionalidades para se montar um framework de desenvolvimento no padrão MVC, como também utilizar os mesmos componentes em aplicações que não usem necessariamente este padrão.</p>
<p>A proposta dele é excelente, o que possibilita digamos, da criação do seu próprio framework, com a estrutura (scaffold) criada a sua maneira. Existem excelentes artigos já em português falando sobre ele, além de um manual completo de utilização. Por isso não vou me estender falando sobre ele.</p>
<p>Uma das dificuldades de alguns desenvolvedores que começaram a utilizá-lo e alvo de constantes questionamentos é a falta do componente que implementa a camada Model. Apesar de já possuir uma bom componente para abstrair o banco de dados e manipular seus dados sem a necessidade de muitos comandos SQL, a camada model ainda faz uma falta, mesmo não sendo um problema grave, já que é possível utilizar qualquer biblioteca que faça o mapeamento objeto relacional como o Lumine, Propel, Doctrine entre outros. Mas ao utilizar qualquer uma dessas bibliotecas, o componente Zend_Db acaba perdendo um pouco a sua utilidade.</p>
<p>Por isso, resolvi escrever e tentar submeter este componente ao core do ZendFramework. Até o momento tenho duas classes escritas parcialmente em testes: Zend_Model e Zend_Model_Import. A primeira classe mapeia o diretório onde estão as entidades e as carrega a medida que forem sendo necessárias, usando um arquivo XML gerado que armazena dados de conexão ao banco ou simplesmente usando uma conexão já feita anteriormente. A segunda classe lista as tabelas do banco e gera as classes das entidades do modelo automaticamente ou importa a partir de um xml contendo todo o esquema do banco.</p>
<p>Nos próximos posts vou mostrar mais ou menos como estou implementando essa camada e coletar sugestões para futuras alterações, antes de submetê-la.</p>
<p>Até a próxima.</p>

	Tags: <a href="http://www.marcelomx.com/tag/cake/" title="Cake" rel="tag nofollow">Cake</a>, <a href="http://www.marcelomx.com/tag/database/" title="Database" rel="tag nofollow">Database</a>, <a href="http://www.marcelomx.com/tag/design-patterns/" title="Design Patterns" rel="tag nofollow">Design Patterns</a>, <a href="http://www.marcelomx.com/category/framework/" title="Framework" rel="tag nofollow">Framework</a>, <a href="http://www.marcelomx.com/tag/framework/" title="Framework" rel="tag nofollow">Framework</a>, <a href="http://www.marcelomx.com/tag/model/" title="Model" rel="tag nofollow">Model</a>, <a href="http://www.marcelomx.com/tag/model-import/" title="Model Import" rel="tag nofollow">Model Import</a>, <a href="http://www.marcelomx.com/tag/mvc/" title="MVC" rel="tag nofollow">MVC</a>, <a href="http://www.marcelomx.com/category/php/" title="Php" rel="tag nofollow">Php</a>, <a href="http://www.marcelomx.com/tag/scaffold/" title="Scaffold" rel="tag nofollow">Scaffold</a>, <a href="http://www.marcelomx.com/tag/sql/" title="SQL" rel="tag nofollow">SQL</a>, <a href="http://www.marcelomx.com/category/tecnologia/" title="Tecnologia" rel="tag nofollow">Tecnologia</a>, <a href="http://www.marcelomx.com/tag/xml/" title="XML" rel="tag nofollow">XML</a>, <a href="http://www.marcelomx.com/tag/zend/" title="Zend" rel="tag nofollow">Zend</a>, <a href="http://www.marcelomx.com/tag/zend-framework/" title="Zend Framework" rel="tag nofollow">Zend Framework</a><br />

	<h4>Posts relacionados</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.marcelomx.com/2009/11/02/frameworks-padroes-de-projetos-e-testes/" title="Frameworks, padrões de projetos e testes. (2 November 2009)">Frameworks, padrões de projetos e testes.</a> (3)</li>
	<li><a href="http://www.marcelomx.com/2008/12/30/escrevendo-urls-no-zend-framework/" title="Escrevendo URLs no Zend Framework (30 December 2008)">Escrevendo URLs no Zend Framework</a> (4)</li>
	<li><a href="http://www.marcelomx.com/2008/11/20/zend-framework-17/" title="Zend Framework 1.7 (20 November 2008)">Zend Framework 1.7</a> (1)</li>
	<li><a href="http://www.marcelomx.com/2008/09/05/zead-project/" title="Zead Project (5 September 2008)">Zead Project</a> (0)</li>
	<li><a href="http://www.marcelomx.com/2008/07/24/zend-framework-16-rc1/" title="Zend Framework 1.6 RC1 (24 July 2008)">Zend Framework 1.6 RC1</a> (0)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.marcelomx.com/2007/04/26/desenvolvendo-no-padrao-mvc-com-zend-framework/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
