<?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>CakePHP Brasil</title>
	<atom:link href="http://blog.cakephp-brasil.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.cakephp-brasil.org</link>
	<description>O blog público para desenvolvedores CakePHP.</description>
	<lastBuildDate>Sat, 20 Jun 2009 22:36:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Estados brasileiros com CakePHP</title>
		<link>http://blog.cakephp-brasil.org/2009/06/20/estados-brasileiros-com-cakephp/</link>
		<comments>http://blog.cakephp-brasil.org/2009/06/20/estados-brasileiros-com-cakephp/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 22:36:29 +0000</pubDate>
		<dc:creator>Juan Basso</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://blog.cakephp-brasil.org/?p=105</guid>
		<description><![CDATA[Pessoal,
Incluí no projeto CakePtbr o model EstadoBrasileiro e o helper Estados. Ambos são relacionados aos estados brasileiros, facilitando o uso nos formulários e models.
Documentação e códigos encontram-se no projeto.
]]></description>
			<content:encoded><![CDATA[<p>Pessoal,</p>
<p>Incluí no <a href="http://github.com/jrbasso/cake_ptbr/tree/master">projeto CakePtbr</a> o model EstadoBrasileiro e o helper Estados. Ambos são relacionados aos estados brasileiros, facilitando o uso nos formulários e models.</p>
<p>Documentação e códigos encontram-se no projeto.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cakephp-brasil.org/2009/06/20/estados-brasileiros-com-cakephp/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Formatação no estilo brasileiro</title>
		<link>http://blog.cakephp-brasil.org/2009/04/22/formatacao-no-estilo-brasileiro/</link>
		<comments>http://blog.cakephp-brasil.org/2009/04/22/formatacao-no-estilo-brasileiro/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 23:41:31 +0000</pubDate>
		<dc:creator>Juan Basso</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[cakebr]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[formatacao]]></category>
		<category><![CDATA[helper]]></category>
		<category><![CDATA[hora]]></category>
		<category><![CDATA[numero]]></category>

		<guid isPermaLink="false">http://blog.cakephp-brasil.org/?p=103</guid>
		<description><![CDATA[Cansado de chamar várias funções com diversos parâmetros para formatar os valores de data, número, etc nos padrões brasileiros? Então seu problemas acabaram!
Agora no plugin CakeBr há o helper chamado Formatacao para facilitar a formatação de datas e números. Os seguintes métodos podem ser utilizados:

data($data = null) Formata uma data timestamp no formato dd/mm/YYYY. Se [...]]]></description>
			<content:encoded><![CDATA[<p>Cansado de chamar várias funções com diversos parâmetros para formatar os valores de data, número, etc nos padrões brasileiros? Então seu problemas acabaram!</p>
<p>Agora no <a href="https://github.com/jrbasso/cake_ptbr/tree">plugin CakeBr</a> há o helper chamado Formatacao para facilitar a formatação de datas e números. Os seguintes métodos podem ser utilizados:</p>
<ul>
<li><strong>data($data = null)</strong> Formata uma data timestamp no formato dd/mm/YYYY. Se não for informada a data, será utilizada a data atual</li>
<li><strong>dataHora($dataHora = null, $segundos = true)</strong> Idem anterior, porém com a informação da hora junto.</li>
<li><strong>dataCompleta($dataHora = null)</strong> Mostra a data completa. Exemplo: &#8216;terça-feira, 21 de abril de 2009, 10:00:00&#8242;.</li>
<li><strong>precisao($numero, $casasDecimais = 3)</strong> Similar ao método precision do helper Time, mostrando os números no formato brasileiro.</li>
<li><strong>porcentagem($numero, $casasDecimais = 2)</strong> Mostra o valor em porcentos, similar ao toPorcentage do TimeHelper.</li>
<li><strong>moeda($valor, $opcoes = array())</strong> Mostra o valor em reais. Exemplo: R$ 10,20.</li>
<li><strong>moedaPorExtenso($numero)</strong> Escreve o valor por extenso, em reais.</li>
</ul>
<p>Caso alguém tenha mais algum método para incluir, basta informar ou criar um fork no projeto.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cakephp-brasil.org/2009/04/22/formatacao-no-estilo-brasileiro/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Behavior com métodos dos Correios</title>
		<link>http://blog.cakephp-brasil.org/2009/04/21/behavior-com-metodos-dos-correios/</link>
		<comments>http://blog.cakephp-brasil.org/2009/04/21/behavior-com-metodos-dos-correios/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 22:35:20 +0000</pubDate>
		<dc:creator>Juan Basso</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[behavior]]></category>
		<category><![CDATA[correios]]></category>

		<guid isPermaLink="false">http://blog.cakephp-brasil.org/?p=98</guid>
		<description><![CDATA[Após criar o plugin para validações de itens brasileiros, duas funçõezinhas para verificar itens dos Correios.
O código está junto do projeto Cake PT-BR, no GitHub.
Similar ao Behavior de Validação, as funções dos Correios foram colocadas dentro de um Behavior. O nome dele é Correios (sugestivo   ). Nesse behavior há dois métodos:

valorFrete: calcula o [...]]]></description>
			<content:encoded><![CDATA[<p>Após criar o plugin para <a href="http://blog.cakephp-brasil.org/2009/04/18/validacoes-brasileiras/">validações de itens brasileiros</a>, duas funçõezinhas para verificar itens dos Correios.</p>
<p>O código está junto do projeto Cake PT-BR, no <a href="http://github.com/jrbasso/cake_ptbr/tree/master">GitHub</a>.</p>
<p>Similar ao Behavior de Validação, as funções dos Correios foram colocadas dentro de um Behavior. O nome dele é Correios (sugestivo <img src='http://blog.cakephp-brasil.org/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  ). Nesse behavior há dois métodos:</p>
<ul>
<li><b>valorFrete:</b> calcula o valor do frete. Parâmetros:
<ul>
<li><b>servico:</b> define o tipo de serviço que será feito. Os valores válidos são através das constantes: CORREIOS_SEDEX, CORREIOS_SEDEX_A_COBRAR, CORREIOS_SEDEX_10, CORREIOS_SEDEX_HOJE, CORREIOS_E_SEDEX, CORREIOS_ENCOMENDA_NORMAL, CORREIOS_PAC.</li>
<li><b>cepOrigem:</b> Cep de origem no formato XXXXX-XXX.</li>
<li><b>cepDestino:</b> Cep de destino no formato XXXXX-XXX.</li>
<li><b>peso:</b> Peso, em quilos, do item a ser transportado. O valor deve ser um número e não deve ultrapassar 30.</li>
<li><b>maoPropria:</b>(opcional. Padrão falso) Valor boleano para indicar se o transporte é com mão prórpria.</li>
<li><b>valorDeclarado:</b> (opcional. Padrão 0.00) Valor do item a ser transportado.</li>
<li><b>avisoRecebimento:</b> (opcional. Padrão falso) Calculo com aviso de recebimento.</li>
</ul>
<p>		O retorno será negativo em caso de erro, que podem ser as constantes:</p>
<ul>
<li>ERRO_CORREIOS_PARAMETROS_INVALIDOS: Um ou mais parâmetros com formato ou conteúdo inválido.</li>
<li>ERRO_CORREIOS_EXCESSO_PESO: Peso acima do limite (30 Kg).</li>
<li>ERRO_CORREIOS_FALHA_COMUNICACAO: Problema de comunicação com o site dos Correios.</li>
<li>ERRO_CORREIOS_CONTEUDO_INVALIDO: O conteúdo retornado pelo Correios não é o esperado.</li>
</ul>
<p>		Em caso de sucesso, será retornado um array com os seguintes indices:</p>
<ul>
<li>ufOrigem: UF da Origem</li>
<li>ufDestino: UF do Destino</li>
<li>capitalOrigem: Valor booleano indicando se a origem é considerada capital</li>
<li>capitalDestino: Valor booleando indicando se o destino é considerado capital</li>
<li>valorMaoPropria: Valor, em reais, da mão própria</li>
<li>valorTarifaValorDeclarado: Valor da tarifa pelo valor declarado</li>
<li>valorFrete: Valor apenas do frente, sem incluir os valores de mão própria e tarifa do valor declarado</li>
<li>valorTotal: Soma de todos os valores anteriores</li>
</ul>
</li>
<li><b>endereco:</b> Informa o endereço baseado em algum CEP. O único parâmetro é o CEP no formato XXXXX-XXX. Os valores de retorno podem ser as constantes ERRO_CORREIOS_PARAMETROS_INVALIDOS, ERRO_CORREIOS_FALHA_COMUNICACAO ou ERRO_CORREIOS_CONTEUDO_INVALIDO em caso de erro. Em caso de sucesso, o retorno será um array com os indices logradouro, bairro, cidade e uf.</li>
</ul>
<p>Bem, agora vamos aos códigos. Um exemplo usando o behavior:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p98code2'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p982"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
</pre></td><td class="code" id="p98code2"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Correios <span style="color: #000000; font-weight: bold;">extends</span> AppModel <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Correios'</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$useTable</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$actsAs</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'CakeBr.Correios'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">function</span> frete<span style="color: #009900;">&#40;</span><span style="color: #000088;">$cepDestino</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">// Supondo que é uma loja que transporta produtos pequenos (até 1Kg)</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">valorFrete</span><span style="color: #009900;">&#40;</span>CORREIOS_SEDEX<span style="color: #339933;">,</span> Configure<span style="color: #339933;">::</span><span style="color: #004000;">read</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Loja.CEP'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$cepDestino</span><span style="color: #339933;">,</span> <span style="color:#800080;">1.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Outro caso</span>
<span style="color: #000000; font-weight: bold;">class</span> Endereco <span style="color: #000000; font-weight: bold;">extends</span> AppModel <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Endereco'</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$actsAs</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'CakeBr.Correios'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">function</span> beforeSave<span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$endereco</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">endereco</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Endereco'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'CEP'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$endereco</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Endereco'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array_merge</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">data</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Endereco'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$endereco</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Aqui serão incluídas as informações de logradouro, bairro, cidade e uf.</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Qualquer dúvida, estamos aí.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cakephp-brasil.org/2009/04/21/behavior-com-metodos-dos-correios/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Validações brasileiras</title>
		<link>http://blog.cakephp-brasil.org/2009/04/18/validacoes-brasileiras/</link>
		<comments>http://blog.cakephp-brasil.org/2009/04/18/validacoes-brasileiras/#comments</comments>
		<pubDate>Sat, 18 Apr 2009 14:55:05 +0000</pubDate>
		<dc:creator>Juan Basso</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[behavior]]></category>
		<category><![CDATA[cep]]></category>
		<category><![CDATA[cnpj]]></category>
		<category><![CDATA[cpf]]></category>
		<category><![CDATA[telefone]]></category>
		<category><![CDATA[validação]]></category>

		<guid isPermaLink="false">http://blog.cakephp-brasil.org/?p=94</guid>
		<description><![CDATA[No CakePHP temos diversas validações que servem para os EUA, porém nenhuma para os padrões brasileiros.  Pensando nisso, resolvi fazer um behavior para fazer este tipo de validação. Por enquanto ele só valida CPF, CNPJ, telefone e CEP.
O código está junto do projeto CakePTBR no GitHub. Eu coloquei ele na forma de plugin, então basta [...]]]></description>
			<content:encoded><![CDATA[<p>No CakePHP temos diversas validações que servem para os EUA, porém nenhuma para os padrões brasileiros.  Pensando nisso, resolvi fazer um behavior para fazer este tipo de validação. Por enquanto ele só valida CPF, CNPJ, telefone e CEP.</p>
<p>O código está junto do projeto <a href="http://github.com/jrbasso/cake_ptbr/tree/master" target="_blank">CakePTBR no GitHub</a>. Eu coloquei ele na forma de plugin, então basta copiar a pasta plugins para dentro do seu projeto (pasta app). Feito isto, ele já instalado e já pode ser usado nas models.</p>
<p>Nas models, deve ser incluído o behavior e usar a validação normalmente. Exemplo:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p94code6'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p946"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p94code6"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Usuario <span style="color: #000000; font-weight: bold;">extends</span> AppModel <span style="color: #009900;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$name</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Usuario'</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$actsAs</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'CakeBr.Validacao'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// Aqui inclui o behavior do plugin CakeBr</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$validates</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
		<span style="color: #0000ff;">'cpf'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
			<span style="color: #0000ff;">'rule'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'cpf'</span>
		<span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Este exemplo mostra como validar o campo cpf. Mais detalhes de como funciona a validação, veja no <a href="http://book.cakephp.org/view/125/Data-Validation" target="_blank">CookBook</a>.</p>
<p>Bem, mas afinal, o que será validado?! Vamos detalhas um pouco mais cada uma das quatro funções de validação:</p>
<p><strong>CPF</strong></p>
<p>Se a regra for declarada apenas como cpf (idem exemplo acima), ele irá validar o CPF no formato XXX.XXX.XXX-XX e também fará o teste do dígito verificador (dois últimos números) para verificar se é um CPF válido.  Em determinadas situações, deseja-se enviar pro banco apenas os números, sem a formatação, pra isso, coloquei um parâmetro opcional que pode ser passado para fazer este teste. Na rule, deve ser colocado:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p94code7'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p947"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p94code7"><pre class="php" style="font-family:monospace;">	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$validates</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
		<span style="color: #0000ff;">'cpf'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
			<span style="color: #0000ff;">'rule'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'cpf'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Deste modo ele irá validar apenas números.</p>
<p><strong>CNPJ</strong></p>
<p>Mesmo funcionamento do CPF, porém para CNPJ. A regra de apenas números também é válida. O formato do CPNJ é considerado XX.XXX.XXX/XXXX-XX.</p>
<p><strong>CEP</strong></p>
<p>O CEP, por padrão vai ser considerado nos formatos XXXXXXXX ou XXXXX-XXX. Caso queira alterar o separador, você pode definir da seguinte maneira:</p>

<div class="wp_codebox_msgheader"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p94code8'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table width="100%" ><tr id="p948"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p94code8"><pre class="php" style="font-family:monospace;">	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$validates</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
		<span style="color: #0000ff;">'cep'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span>
			<span style="color: #0000ff;">'rule'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'cep'</span><span style="color: #339933;">,</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'-'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'.'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
		<span style="color: #009900;">&#41;</span>
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>No exemplo acima, ele vai validar os valores padrões e XXXXX.XXX.</p>
<p><strong>Telefone</strong></p>
<p>A validação do telefone se dará através das formatações:</p>
<ul>
<li>XXXX-XXXX</li>
<li>(XX) XXXX-XXX (o espaço entre o fechamento de parênteses e o número é opcional, mas limitado a 1 espaço)</li>
<li>+XX (XX) XXXX-XXXX (idem anterior sobre o espaçamento)</li>
</ul>
<p>Caso deseje validar apenas números, passar o parâmetro true na validação. Neste caso, ele validará números com 8 ou 10 caracteres.</p>
<p>Bem, são estas as validações que fiz por enquanto. Caso alguém tenha uma sugestão de nova validação ou dúvida sobre as apresentadas, fique a vontade de comentar.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cakephp-brasil.org/2009/04/18/validacoes-brasileiras/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>I Encontro de Cakers no Brasil</title>
		<link>http://blog.cakephp-brasil.org/2009/04/15/i-encontro-de-cakers-no-brasil/</link>
		<comments>http://blog.cakephp-brasil.org/2009/04/15/i-encontro-de-cakers-no-brasil/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 23:48:02 +0000</pubDate>
		<dc:creator>Juan Basso</dc:creator>
				<category><![CDATA[Eventos]]></category>

		<guid isPermaLink="false">http://blog.cakephp-brasil.org/?p=91</guid>
		<description><![CDATA[Esta semana Renan Gonçalves anunciou no seu blog oficialmente sobre o I encontro de cakers no Brasil. Ele será dia 13/06/2009 (das 09h às 18h), em São Paulo/SP, limitado a 37 pessoas (exatamente, vagas limitadas). O custo para participar será de R$ 20,00 por pessoa.
Maiores informações poderão ser obtidas no próprio site (ou até com [...]]]></description>
			<content:encoded><![CDATA[<p>Esta semana Renan Gonçalves anunciou no <a href="http://blog.renangoncalves.com/2009/04/14/i-encontro-de-cakephp-em-sao-paulo/" target="_blank">seu blog</a> oficialmente sobre o I encontro de cakers no Brasil. Ele será dia 13/06/2009 (das 09h às 18h), em São Paulo/SP, limitado a 37 pessoas (exatamente, vagas limitadas). O custo para participar será de R$ 20,00 por pessoa.</p>
<p>Maiores informações poderão ser obtidas no próprio site (ou até com ele mesmo): <a href="http://blog.renangoncalves.com/2009/04/14/i-encontro-de-cakephp-em-sao-paulo/" target="_blank">http://blog.renangoncalves.com/2009/04/14/i-encontro-de-cakephp-em-sao-paulo/</a></p>
<p>Esperamos que o evento venha a fortalecer o CakePHP no mercado e a comunicação entre os desenvolvedores com os maiores nomes em âmbito nacional.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cakephp-brasil.org/2009/04/15/i-encontro-de-cakers-no-brasil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP na mídia nacional</title>
		<link>http://blog.cakephp-brasil.org/2009/04/12/cakephp-na-midia-nacional/</link>
		<comments>http://blog.cakephp-brasil.org/2009/04/12/cakephp-na-midia-nacional/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 02:05:49 +0000</pubDate>
		<dc:creator>Juan Basso</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Outros]]></category>
		<category><![CDATA[debate]]></category>
		<category><![CDATA[entrevista]]></category>
		<category><![CDATA[midia]]></category>
		<category><![CDATA[reportagem]]></category>
		<category><![CDATA[revista]]></category>

		<guid isPermaLink="false">http://blog.cakephp-brasil.org/?p=87</guid>
		<description><![CDATA[A revista TI Digital, na sua segunda edição, publicou um debate com o John Anderson (um dos criadores do framework) e acrescentou opiniões de nomes nacionais, dentre eles: João Jose, Bill, Elton Minetto e Tulio Faria. Todos estes renomados no mundo Cake e frequentadores do Groups de CakePHP Luso-brasileiro.
Não deixem de ler a reportagem que [...]]]></description>
			<content:encoded><![CDATA[<p>A <a href="http://www.revistatidigital.com.br/" target="_blank">revista TI Digital</a>, na sua segunda edição, publicou um debate com o John Anderson (um dos criadores do framework) e acrescentou opiniões de nomes nacionais, dentre eles: <a href="http://kiss.souagil.com.br/" target="_blank">João Jose</a>, <a href="http://www.cakephp.com.br" target="_blank">Bill</a>, <a href="http://www.eltonminetto.net/" target="_blank">Elton Minetto</a> e <a href="http://www.tuliofaria.net/" target="_blank">Tulio Faria</a>. Todos estes renomados no mundo Cake e frequentadores do <a href="http://groups.google.com/group/cakephp-pt" target="_blank">Groups de CakePHP Luso-brasileiro</a>.</p>
<p>Não deixem de ler a reportagem que é muito boa e que sem dúvida ajuda a levar o CakePHP cada vez mais aos sites e sistemas web.</p>
<p>Parabéns a revista e a todos que participaram!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cakephp-brasil.org/2009/04/12/cakephp-na-midia-nacional/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Encontro em Sampa</title>
		<link>http://blog.cakephp-brasil.org/2009/03/05/encontro-em-sampa/</link>
		<comments>http://blog.cakephp-brasil.org/2009/03/05/encontro-em-sampa/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 21:40:09 +0000</pubDate>
		<dc:creator>Juan Basso</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[encontro]]></category>
		<category><![CDATA[reunião]]></category>
		<category><![CDATA[sao paulo]]></category>
		<category><![CDATA[sp]]></category>

		<guid isPermaLink="false">http://blog.cakephp-brasil.org/?p=85</guid>
		<description><![CDATA[Renan Gonçalves e Felipe Theodoro estão organizando um evento para reunir o pessoal que trabalha ou está ligado com CakePHP. O evento pretente contar com 4 ou 5 palestras e um happy para networking&#8230;
Ainda não há data, local, previsão do tempo ou afins, mas que provavelmente será em São Paulo/SP. Confiram no site deles para [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.renangoncalves.com/2009/03/05/evento-sobre-cakephp-em-sao-paulo/" target="_blank">Renan Gonçalves</a> e <a href="http://blog.ftgoncalves.com/2009/03/evento-cakephp-em-sampa/" target="_blank">Felipe Theodoro</a> estão organizando um evento para reunir o pessoal que trabalha ou está ligado com CakePHP. O evento pretente contar com 4 ou 5 palestras e um happy para networking&#8230;</p>
<p>Ainda não há data, local, previsão do tempo ou afins, mas que provavelmente será em São Paulo/SP. Confiram no site deles para maiores informações.</p>
<p>Abraços e vamos tentar ir pra lá, vamos fazer parte do primeiro encontro de Cakers do Brasil.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cakephp-brasil.org/2009/03/05/encontro-em-sampa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Finalmente a release: CakePHP 1.2!</title>
		<link>http://blog.cakephp-brasil.org/2008/12/26/finalmente-a-release-cakephp-12/</link>
		<comments>http://blog.cakephp-brasil.org/2008/12/26/finalmente-a-release-cakephp-12/#comments</comments>
		<pubDate>Fri, 26 Dec 2008 16:06:31 +0000</pubDate>
		<dc:creator>Juan Basso</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://blog.cakephp-brasil.org/2008/12/26/finalmente-a-release-cakephp-12/</guid>
		<description><![CDATA[Pessoal, como presente de natal tivemos a chegada da release 1.2 tão esperada por muitos do CakePHP.
Os detalhes podem ser vistos em http://bakery.cakephp.org/articles/view/the-gift-of-1-2-final.
Abraços e bons projetos a todos.
]]></description>
			<content:encoded><![CDATA[<p>Pessoal, como presente de natal tivemos a chegada da release 1.2 tão esperada por muitos do CakePHP.<br />
Os detalhes podem ser vistos em <a href="http://bakery.cakephp.org/articles/view/the-gift-of-1-2-final" target="_blank">http://bakery.cakephp.org/articles/view/the-gift-of-1-2-final.</a></p>
<p>Abraços e bons projetos a todos.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cakephp-brasil.org/2008/12/26/finalmente-a-release-cakephp-12/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Benchmarks entre frameworks PHP</title>
		<link>http://blog.cakephp-brasil.org/2008/12/25/benchmarks-entre-frameworks-php/</link>
		<comments>http://blog.cakephp-brasil.org/2008/12/25/benchmarks-entre-frameworks-php/#comments</comments>
		<pubDate>Thu, 25 Dec 2008 18:40:43 +0000</pubDate>
		<dc:creator>Juan Basso</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[code igniter]]></category>
		<category><![CDATA[comparação]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[symfony]]></category>
		<category><![CDATA[yii]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://blog.cakephp-brasil.org/?p=76</guid>
		<description><![CDATA[Pessoal,
 
Natal é legal para trocar presentes, unir família e tudo mais, mas isso dura algumas horas, nas demais ficamos sem ter o que fazer, até mesmo porque o comércio não abre. Com isso, resolvi fazer alguns testes nos principais frameworks PHP que estão no mercado: CakePHP, Code Igniter, Symfony, Yii e Zend Framework.
Todos os benchmarks [...]]]></description>
			<content:encoded><![CDATA[<p>Pessoal,</p>
<p> </p>
<p>Natal é legal para trocar presentes, unir família e tudo mais, mas isso dura algumas horas, nas demais ficamos sem ter o que fazer, até mesmo porque o comércio não abre. Com isso, resolvi fazer alguns testes nos principais frameworks PHP que estão no mercado: <a href="http://www.cakephp.org" target="_blank">CakePHP</a>, <a href="http://codeigniter.com/" target="_blank">Code Igniter</a>, <a href="http://www.symfony-project.org/" target="_blank">Symfony</a>, <a href="http://www.yiiframework.com/" target="_blank">Yii</a> e <a href="http://framework.zend.com/" target="_blank">Zend Framework</a>.</p>
<p>Todos os benchmarks que eu vejo pela internet são de um simples hello world, que às vezes não utilizam o framework como indicado e acaba desvirtuando um pouco. Além disso, muitos testam somente a versão estável, deixando pra lá algumas versões mais &#8220;quentes&#8221;, como no caso do CakePHP 1.2. Então resolvi mudar! Fiz um teste com o famoso Hello World, e outros dois: um acessando o banco de dados e lendo 10 registros e o mesmo código lendo 1000 registros. Assim, aproxima um pouco da realidade do desenvolvimento, pois não desenvolvemos Hello Worlds, mas sim acesso a banco, uso de MVC (completo e não como os exemplos que não há view!). Não testei as funcionalidades em si de cada framework como cache, ACL, componentes, etc, detive-me ao básico, acessar o banco e mostrar um dos campos.</p>
<p>Bem, vamos começar falando da máquina de testes. Estava rodando num Debian Etch, com processador Intel Xeon 2.66GHz, 256MB de RAM. Esta máquina é um servidor de produção que é vendido pela <a href="http://www.virtuaserver.com.br" target="_blank">VirtuaServer</a>. Ou seja, tentei fazer o teste num servidor que usamos na prática e não numa máquina local de qualquer desenvolvedor. Nesta máquina a versão do Apache é a 2.2.3, PHP 5.2.0 e MySQL 5.0.32. Nenhuma extensão de cache/performance (APC, Memcache, etc) está habilitada.</p>
<p>O desenvolvimento da aplicação eu fiz me baseando na documentação de cada framework e não a partir de exemplos prontos, pois queria fazer seguindo a lógica dos desenvolvedores de cada framework. Tentei deixar o mais próximo do modo de produção (desabilitando debugs, etc).</p>
<p>Vamos aos resultados, começando pelo famoso Hello World:</p>
<p><img class="aligncenter" title="Hello World" src="http://chart.apis.google.com/chart?cht=bhg&amp;chs=600x260&amp;chds=1,1700,1,1700&amp;chd=t:425,433,1480,325,1622,495|487,432,1598,345,1571,495&amp;chco=1410aa,aa143c&amp;chtt=Hello+World&amp;chdl=10+concorrências|100+concorrências&amp;chxt=x,y&amp;chxl=0:|0|340|680|1020|1360|1700|1:|Zend 1.7.2|Yii 1.0.0|Symfony 1.2.1|CodeIgniter 1.7.0|CakePHP 1.2 RC4|CakePHP 1.1.20&amp;chbh=10,3,10" alt="" width="600" height="260" /></p>
<p>O eixo Y representa o número de requisições completadas após 30 segundos de testes. Usei a ferramenta &#8220;<a href="http://httpd.apache.org/docs/1.3/programs/ab.html" target="_blank">ab</a>&#8221; para fazer os testes (parâmetros: -t 30 -c 10 ou -c 100. Isso significa que testei cada framework por 30 segundos, com 10 ou 100 requisições em paralelo).</p>
<p>Como podem ver, Yii e CodeIgniter apresentaram excelentes resultados, enquanto os demais ficaram próximos. Alguns poderiam dizer  que o CakePHP apresenta resultados inferiores por manter suporte ao PHP4, o que limita algumas coisas, mas lembro que o CodeIgniter também suporta o PHP4 e apresentou resultados surpreendentes.</p>
<p>PS: Fiz as aplicações antes de iniciar todos os testes, ou seja, a parte de banco de dados já estava configurada até para fazer o Hello World, então caberia a aplicação conectar/carregar &#8220;drivers&#8221; ou não&#8230;</p>
<p>Ok, agora vamos aos resultados dos testes dos frameworks acessando a base de dados e mostrando 10 registros:</p>
<p style="text-align: center; "><img class="aligncenter" title="Acessando 10 registros no banco de dados" src="http://chart.apis.google.com/chart?cht=bhg&amp;chs=600x260&amp;chds=1,1700,1,1700&amp;chd=t:483,302,966,319,836,441|467,293,991,312,791,374&amp;chco=1410aa,aa143c&amp;chtt=Acesso+Banco+de+dados|10+registros&amp;chdl=10+concorrências|100+concorrências&amp;chxt=x,y&amp;chxl=0:|0|340|680|1020|1360|1700|1:|Zend 1.7.2|Yii 1.0.0|Symfony 1.2.1|CodeIgniter 1.7.0|CakePHP 1.2 RC4|CakePHP 1.1.20&amp;chbh=10,3,10" alt="" width="600" height="260" /></p>
<p>Novamente Yii e CodeIgniter se sobressaindo&#8230; Porém, vejam que o CakePHP estável (1.1) obteve melhores resultados que o CakePHP 1.2 e mais, o CakePHP 1.2 obteve o pior resultados dos pesquisados.</p>
<p>Outra coisa interessante que podemos notar é que o CodeIgniter tem uma performance melhor com mais requisições em paralelo, sendo mais interessante para sites de grande porte, como portais que tem bastante acesso.</p>
<p>E agora o último teste: acesso ao banco com 1000 registros. A idéia deste teste é tentar visualizar se o framework tem um overhead grande por causa de registros ou por causa da pesquisa. Se pensarmos, a pesquisa é a mesma, a quantidade de registros retornados é que mudará, então é neste ponto que vamos notar as diferenças.</p>
<p style="text-align: center; "><img class="aligncenter" title="Acessando 1000 registros no banco de dados" src="http://chart.apis.google.com/chart?cht=bhg&amp;chs=600x260&amp;chds=1,1700,1,1700&amp;chd=t:259,243,787,223,490,402|254,244,754,230,497,398&amp;chco=1410aa,aa143c&amp;chtt=Acesso+Banco+de+dados|1000+registros&amp;chdl=10+concorrências|100+concorrências&amp;chxt=x,y&amp;chxl=0:|0|340|680|1020|1360|1700|1:|Zend 1.7.2|Yii 1.0.0|Symfony 1.2.1|CodeIgniter 1.7.0|CakePHP 1.2 RC4|CakePHP 1.1.20&amp;chbh=10,3,10" alt="" width="600" height="260" /></p>
<p style="text-align: left;">CodeIgniter novamente se destacando e ainda deixando o Yii mais distante que nos demais testes. Nota-se também que todos têm um overhead grande sobre os registros retornados no banco, pois diminuíram muito sua performance. O CakePHP 1.2 reduziu pouco, o que é interessante.</p>
<p style="text-align: left;">Vale ressaltar que o teste com 1000 registros não é tão usado na prática, pois uma página com 1000 registros pro usuário ler é um tanto quanto chato. Normalmente nestes casos há paginação. Exemplos práticos que vejo disto é na geração de relatório ou gráficos, mas que são pontos isolados e não tão usuais.</p>
<p style="text-align: left;">Alguns comentários sobre os desenvolvimentos das aplicações de teste:</p>
<ul>
<li>Do CakePHP eu não posso falar nada, pois já trabalho com ele a mais de dois anos. Os demais, desconhecia quase que totalmente;</li>
<li>O Zend Framework eu tive um trabalho imenso para conseguir fazer o banco de dados funcionar. Na documentação deles eles falaram várias coisas que podem ser feitas, mas não dizem a básica: aonde vão os arquivos;</li>
<li>No Zend eles recomendam que as requisições que só vão retornar textos simples seja feito no controller, por exemplo, na action do controller você coloca um die ou exit. Eu acho que isso quebra o MVC e em grandes projetos fica uma salada de fruta;</li>
<li>Ainda no Zend eles recomendam que os arquivos que não são de view (não teham HTML) você não feche a tag do PHP (?&gt;), assim evita que fiquem linhas em branco no arquivo e dê os famosos erros de não conseguir escrever no header. Ok, isso é legal, mas não fechar as tags eu acho que é amadorismo. Se o cara fechou e deixou uma linha em branco, é desatenção e deve ser corrigido e não contornado.</li>
<li>O Symfony eu não sei direito tudo que ele gerou, sei que eu executava alguns comandos (indicados na documentação) e ele fazia as coisas acontecerem. Não encontrei na documentação sobre a lógica e como desenvolver manualmente&#8230;</li>
<li>No Symfony, também tive problema em configurar o banco de dados, pois na documentação estava errada, mas em algumas pesquisas do Google eu achei;</li>
<li>O Yii parece fácil de usar. Ele tem certas similaridades com o CakePHP (exceto na performance, como foi visto);</li>
<li>Code Igniter também foi tranqüilo o desenvolvimento. A estrutura de diretórios é similar a do CakePHP, facilitando um pouco.</li>
</ul>
<p>Minhas opiniões quanto os resultados:</p>
<ul>
<li>CakePHP, Yii e CodeIgniter são fáceis de desenvolver, tem uma boa organização e estruturação, ficando legíveis e bons para se trabalhar em equipes diversificadas;</li>
<li>A documentação do Zend e Symfony são meio obscuras para &#8220;dummies&#8221;, tendo que quebrar um pouco a cabeça para conseguir fazer coisas simples (como o acesso ao banco).  Para quem está começando, acho que isso é um tanto quanto chato e desestimulante&#8230;</li>
<li>Yii e CodeIgniter parecem ter bom desempenho na prática, porém desconheço dos recursos e de como é a forma de desenvolvimento. Temos que ver se eles não são muito amarrados aos recursos internos e não dão suporte a integração com outras aplicações/componentes.  Entretanto, se eu fosse começar um desenvolvimento hoje, estudaria um pouco mais esses dois;</li>
<li>Yii é focado para web 2.0 e trabalha com <a href="http://jquery.com" target="_blank">jQuery</a> (que é a onda do momento em JavaScript). Interessante&#8230; Acho que se ele incorporar algumas funcionalidades mais comerciais (testes automatizados, etc) ele terá futuro promissor e não será um fogo de palha;</li>
<li>O CakePHP ainda parece o mais &#8220;potente&#8221; do mercado e tem uma boa visão comercial. Enquanto que a maioria se preocupa em fazer site &#8220;legal&#8221;, o CakePHP dá essa possibilidade e ao mesmo tempo oferece um suporte a desenvolvimento para empresas, com facilidades para desenvolvimento utilizando métodos ágeis, testes automatizados, etc.</li>
</ul>
<p>Bem, acho que é isso. Não vou largar do CakePHP, mas não custa dar uma estudada mais a fundo nos outros.</p>
<p>Caso alguém tenha alguma sugestão de testes a fazer, comente! Pois vou deixar minha suite de testes montada para quando sair novas versões fazer a comparação.</p>
<p>Caso queiram ver os testes mais detalhados, podem acessar os <a href="http://www.cakephp-brasil.org/benchmarks/resultados/final.html" target="_blank">últimos resultados dos testes</a>. Neste site também está disponível o resultado mais detalhado de cada teste, inclusive os números.</p>
<p> </p>
<p>Abraços.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cakephp-brasil.org/2008/12/25/benchmarks-entre-frameworks-php/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Migrando do CakePHP RC3 para RC4</title>
		<link>http://blog.cakephp-brasil.org/2008/12/20/migrando-do-cakephp-rc3-para-rc4/</link>
		<comments>http://blog.cakephp-brasil.org/2008/12/20/migrando-do-cakephp-rc3-para-rc4/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 19:48:47 +0000</pubDate>
		<dc:creator>Juan Basso</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[migração]]></category>
		<category><![CDATA[rc3]]></category>
		<category><![CDATA[RC4]]></category>

		<guid isPermaLink="false">http://blog.cakephp-brasil.org/?p=74</guid>
		<description><![CDATA[Depois de anunciada a nova versão, vamos as principais mudanças:

O arquivo app/webroot/css.php foi completamente modificado, então é necessário substituí-lo;
Classregistry::_duplicate() agora é um método privado (Classregistry::__duplicate());
Router::matchRoute() agora é um método privado (Router::__matchRoute());
O parâmetro de Xml::toArray() foi substituído de &#8220;$object = null&#8221; para &#8220;$camelize = true&#8221;;
Os métodos setAro(), setAco(), getAro() e getAco() foram removidos da classe Acl;
O método Model::normalizeFindParams() [...]]]></description>
			<content:encoded><![CDATA[<p>Depois de <a href="http://blog.cakephp-brasil.org/2008/12/19/nova-versao-do-cakephp-no-ar-rc4/">anunciada a nova versão</a>, vamos as principais mudanças:</p>
<ul>
<li>O arquivo app/webroot/css.php foi completamente modificado, então é necessário substituí-lo;</li>
<li>Classregistry::_duplicate() agora é um método privado (Classregistry::__duplicate());</li>
<li>Router::matchRoute() agora é um método privado (Router::__matchRoute());</li>
<li>O parâmetro de Xml::toArray() foi substituído de &#8220;$object = null&#8221; para &#8220;$camelize = true&#8221;;</li>
<li>Os métodos setAro(), setAco(), getAro() e getAco() foram removidos da classe Acl;</li>
<li>O método Model::normalizeFindParams() foi removido;</li>
<li>O parâmetro safe do helper Javascript foi removida;</li>
<li>O método Model::getDisplayField() foi marcado como depreciado. Agora deve ser acessada a propriedade displayField ($model-&gt;displayField).</li>
</ul>
<p>Boa sorte na migração.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cakephp-brasil.org/2008/12/20/migrando-do-cakephp-rc3-para-rc4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
