<?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 Rodrigo &#187; orm</title>
	<atom:link href="http://marcelorodrigo.com/tags/orm/feed" rel="self" type="application/rss+xml" />
	<link>http://marcelorodrigo.com</link>
	<description>Quer moleza? Senta no pudim!</description>
	<lastBuildDate>Mon, 19 Jul 2010 19:36:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Kohana PHP &#8211; ORM Conventions</title>
		<link>http://marcelorodrigo.com/kohana-php-orm-conventions.html</link>
		<comments>http://marcelorodrigo.com/kohana-php-orm-conventions.html#comments</comments>
		<pubDate>Tue, 01 Sep 2009 14:34:21 +0000</pubDate>
		<dc:creator>Marcelo Rodrigo</dc:creator>
				<category><![CDATA[Kohana]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://marcelorodrigo.com/?p=253</guid>
		<description><![CDATA[No Kohana temos a facilidade de trabalhar com convenções em vez de configurações, isto dá agilidade e comodidade ao desenvolvedor que não precisa ficar configurando inúmeros arquivos de mapeamento de banco de dados para que sua aplicação funcione perfeitamente. Porém, quando vamos trabalhar com databases que não seguem estas convenções (o que pra mim é [...]]]></description>
			<content:encoded><![CDATA[<p>No Kohana temos a facilidade de trabalhar com <a href="http://pt.wikipedia.org/wiki/Conven%C3%A7%C3%A3o_sobre_configura%C3%A7%C3%A3o" target="_blank">convenções em vez de configurações</a>, isto dá agilidade e comodidade ao desenvolvedor que não precisa ficar configurando inúmeros arquivos de mapeamento de banco de dados para que sua aplicação funcione perfeitamente.</p>
<p>Porém, quando vamos trabalhar com databases que não seguem estas convenções (o que pra mim é algo muito comum) ou que já atendem a outros sistemas tambéme e não podem ser modificadas, temos de configurar somente as excessões para que tudo continue funcionando perfeitamente.</p>
<p>Algumas destas convenções, e suas excessões:</p>
<h3>Nomes de tabelas no plural</h3>
<p>Nomes de tabelas devem estar no plural. Por padrão o <a href="http://docs.kohanaphp.com/libraries/orm" target="_blank">ORM</a> obtém o nome da tabela e determina seu plural com ajuda do helper <a href="http://docs.kohanaphp.com/helpers/inflector" target="_blank"><em>inflector</em></a>.<br />
Convenção: Ex: <em>users</em>, <em>invoices</em>.<br />
Excessão: Declarar a propriedade <em>table_name</em></p>
<pre class="brush: php;">protected $table_name = 'usuarios';</pre>
<h3>Models no singular</h3>
<p>Enquanto pela convenção as tabelas no banco devem ter seu nome no plural, o nome do arquivo e do model deve ser no singular.<br />
Convenção: <em>NomedaTabela</em> seguido de <em>_Model</em></p>
<pre class="brush: php;">class User_Model extends ORM {}</pre>
<h3>Autoincrement</h3>
<p>Toda tabela deve ter um campo <em>autoincrement + primary key</em> chamado <strong>id<em><br />
</em></strong> Excessão: No model, declarar a propriedade primary_key</p>
<pre class="brush: php;">protected $primary_key = 'meucampoid';</pre>
<h3>Foreign Keys</h3>
<p>Chaves estrangeiras devem ser nomeadas no banco de dados como <strong>nomeDoModel</strong> seguido de <strong>_id<em><br />
</em></strong> Exemplo: <em>invoice_id</em>, <em>user_id</em><br />
Excessão: No exemplo abaixo, a tabela <em>invoices </em>esteja relacionada a <em>users</em>, porém na tabela <em>invoices </em>a chave estrangeira chame-se<em> user_fk</em> (que não segue o padrão sugerido)</p>
<div id="attachment_268" class="wp-caption alignnone" style="width: 336px"><a href="http://marcelorodrigo.com/wp-content/uploads/2009/09/kohana-orm-fk-exemplo.JPG"><img class="size-full wp-image-268 " title="Relacionamento entre Users e Invoices" src="http://marcelorodrigo.com/wp-content/uploads/2009/09/kohana-orm-fk-exemplo.JPG" alt="Relacionamento entre Users e Invoices" width="326" height="191" /></a><p class="wp-caption-text">Relacionamento entre Users e Invoices</p></div>
<p>No model <em>Invoice_Model</em>, declare a propriedade foreign_key</p>
<pre class="brush: php;">class Invoice_Model extends ORM {
    protected $foreign_key = array('user' =&gt; 'user_fk');
}</pre>
<h3>Tabelas Pivôs</h3>
<p>Tabelas pivôs devem ser nomeadas pelos nomes das tabelas pais na ordem alfabética (legal e organizado não?), nesta forma<em> tabela1_tabela2</em>. Vamos usar como exemplo o relacionamento de muitos-para-muitos entre a tabela <em>users</em> e as tabelas de <em>functions</em>, tabela de junção deve ser nomeada no banco como <em>functions_users</em></p>
<p>Simples, não? É <strong>Kohana</strong>!<br />
E é por isso que eu gosto.</p>
]]></content:encoded>
			<wfw:commentRss>http://marcelorodrigo.com/kohana-php-orm-conventions.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Kohana3, novidades e mudanças!</title>
		<link>http://marcelorodrigo.com/kohana-3-novidades-e-mudancas.html</link>
		<comments>http://marcelorodrigo.com/kohana-3-novidades-e-mudancas.html#comments</comments>
		<pubDate>Thu, 27 Aug 2009 01:38:35 +0000</pubDate>
		<dc:creator>Marcelo Rodrigo</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Kohana]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[hmvc]]></category>
		<category><![CDATA[orm]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://marcelorodrigo.com/?p=246</guid>
		<description><![CDATA[Agosto já está no fim e tudo indica que ainda este ano será lançado o Kohana 3, uma nova versão que além de muitas melhorias vem acompanhada de muitas mudanças na sua estrutura. Tenho nos meus rascunhos já alguns artigos para revisar e publicar sobre utilização do Kohana, porém acredito que terei de atualizar os [...]]]></description>
			<content:encoded><![CDATA[<p>Agosto já está no fim e tudo indica que ainda este ano será lançado o <a href="http://github.com/kohana/" target="_blank">Kohana 3</a>, uma nova versão que além de muitas melhorias vem acompanhada de muitas mudanças na sua estrutura. Tenho nos meus rascunhos já alguns artigos para revisar e publicar sobre utilização do Kohana, porém acredito que terei de atualizar os mesmos para que fiquem 100% compatíveis com esta nova versão.</p>
<p>Para quem tem pressa, a resposta está ai: a migração de aplicações Kohana 2.x para 3.0 não será automática e exigirá revisão em alguns pontos do desenvolvimento, a começar que partimos de <abbr title="Model View Controller">MVC</abbr> para <abbr title="Hierarchical Model View Controller">HMVC</abbr></p>
<h3>Que raios é HMVC?</h3>
<p>Não complique!<br />
<a href="http://en.wikipedia.org/wiki/Presentation-abstraction-control" target="_blank">HMVC</a> (Hierarchical Model View Controller) é um padrão de design novo, porém muito semelhante ao MVC que você já conhece, adicionado de uma hierarquia no design original do MVC. Quando uma requisição URI for solicitada, qualquer parte do MVC pode chamar outro item da hierarquia, o que permite o desenvolvedor uma maior flexibilidade e modularização do sistema que estiver utilizando. A vantagem é que se você quiser continuar com o padrão MVC, nada vai impedir você trabalhar desta forma.</p>
<h3>Bootstrap</h3>
<p>Quem me conhece sabe que eu <span style="text-decoration: line-through;">odeio</span> não gosto muito bootstrap do Zend Framework. O ZF é uma plataforma invejável tanto pela sua estabilidade como pelas suas características, porém montar arquivos de bootstrap decentes no ZF nunca foi sucesso pra mim. Sei lá, acho que fiquei mal acostumado com o Kohana onde eu ligo o carro e saido acelerando, e no ZF eu tinha que toda vez parafusar as 4 rodas e calibrar todos os pneus antes de sair rodando a aplicação :)</p>
<p>Voltando ao assunto, KO3 terá um bootstrap dedicado, porém você não vai precisar sair montando um do zero e sofrer horas para deixar ele funcionando: um <a href="http://github.com/kohana/kohana/blob/f2864c079dfec0268f8d23b00a0b4ad8061d58c5/application/bootstrap.php" target="_blank">bootstrap padrão</a> que atende praticamente todas as aplicações já fará parte do pacote, somente o tunning da aplicação ficará por sua conta, como você já fazia no Kohana 2.x</p>
<h3>Arquivos de Configurações</h3>
<p>Boa parte dos arquivos do diretório a<em>pplication/config</em> e suas diretivas também foram movidas para o arquivo de <em>bootstrap</em>. Quem já teve contato com Zend Framework estará bem familiarizado com esta mudança.</p>
<h3>Controllers viraram Classes</h3>
<p>Os controllers que estavam em <em>/application/controllers</em> vão para <em>/application/<strong>classes/</strong>controllers</em>.<br />
<em>Libraries</em> e <em>Helpers</em> seguem o mesmo padrão e são todos <strong>classes</strong> agora, tudo fica mais organizado e OO.</p>
<p>Estrutura de diretórios e autoloading do KO3 também mudou: Uma nova convenção de arquivos foi desenvolvida de forma que simplifica a identificação e localização de classes. Todas as classes fazem uso do sublinhado (_). A estrutura de nomes é separada, como anteriormente, mas você vai notar uma diferença no formato.</p>
<p><em><span style="color: #808080;"><span style="color: #008080;">Teste</span>_<span style="color: #008000;">Controller</span></span></em><span style="color: #808080;"> <span style="color: #333333;"><strong>agora será</strong></span> </span><em><span style="color: #808080;"><span style="color: #008000;">Controller</span>_<span style="color: #008080;">Teste</span></span></em><span style="color: #808080;"> (</span><em><span style="color: #808080;">/application/classes/<span style="color: #008000;">controller</span>/<span style="color: #008080;">teste</span>.php</span></em><span style="color: #808080;">)</span><br />
<span style="color: #808080;"><span style="color: #808000;">Kohana</span>_<span style="color: #008000;">Session</span>_<span style="color: #008080;">Cookie</span> <span style="color: #333333;"><strong>corresponde a</strong></span> /system/<span style="color: #808000;">kohana</span>/<span style="color: #008000;">session</span>/<span style="color: #008080;">cookie</span>.php</span></p>
<p>Ainda quero fazer alguns testes com o novo driver ORM, porém não me sobrou tempo ainda!<br />
Acho que com o lançamento oficial da nova versão (que hoje está em RC3) posso publicar uma análise mais voltada ao ORM, que será exclusivamente baseado no PDO</p>
]]></content:encoded>
			<wfw:commentRss>http://marcelorodrigo.com/kohana-3-novidades-e-mudancas.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
