<?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>cObaia.net &#187; frameworks</title>
	<atom:link href="http://cobaia.net/categorias/frameworks/feed/" rel="self" type="application/rss+xml" />
	<link>http://cobaia.net</link>
	<description>PHP, Javascript and some code around it!</description>
	<lastBuildDate>Sun, 29 Jan 2012 03:56:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Novas versões do CakePHP, CakePHP 1.2, CakePHP 2 e Cake 3</title>
		<link>http://cobaia.net/2009/08/novas-versoes-do-cakephp-cakephp-1-2-cakephp-2-e-cake-3/</link>
		<comments>http://cobaia.net/2009/08/novas-versoes-do-cakephp-cakephp-1-2-cakephp-2-e-cake-3/#comments</comments>
		<pubDate>Thu, 06 Aug 2009 02:07:09 +0000</pubDate>
		<dc:creator>Vinícius Krolow</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://cobaia.net/?p=587</guid>
		<description><![CDATA[Foi lançada duas novas versões do CakePHP, um novo released da versão 1.2 (CakePHP 1.2) e uma versão de desenvolvimento do Cake 3. Curiosidade da versão do Cake 3 é a mudança de nome que provavelmente foi dada por causa da licensa do &#8220;PHP&#8221;. 3. The name "PHP" must not be used to endorse or [...]]]></description>
			<content:encoded><![CDATA[<p>Foi lançada duas novas versões do CakePHP, um novo released da versão 1.2 (CakePHP 1.2) e uma versão de desenvolvimento do Cake 3.</p>
<p>Curiosidade da versão do Cake 3 é a mudança de nome que provavelmente foi dada por causa da licensa do &#8220;PHP&#8221;.</p>
<pre>  3. The name "PHP" must not be used to endorse or promote products
     derived from this software without prior written permission. For
     written permission, please contact group@php.net.</pre>
<p>Veja toda a Licensa do <a href="http://www.php.net/license/3_01.txt">PHP aqui</a>.</p>
<p>Ou seja só pode usar o nome PHP em algum produto com autorização do PHP, não sei se as outras versões possuem essa autorização mas todavia, acho que o Cake está encaminhando a mudar o nome.</p>
<p>O released CakePHP 1.2.4.8284, é de bug fixes, com pequenas mudanças, e alguns bugs fixed, assim como melhorias nos tests. Todas as mudanças na versão do CakePHP 1.2 pode ser visto no <a href="https://trac.cakephp.org/wiki/changelog/1.2.x.x/8284">changelog</a>.</p>
<p>Enquanto a versão <a href="http://code.cakephp.org/cake3">Cake 3</a>, está sendo desenvolvida utilizando os recursos do PHP 5.3, como funções anonimas e namespace, que irão ajudar muito principalmente no desenvolvimento de plugins que será muito mais fácil, pois será agora possível a criação de pacotes. Assim como o conflito com o nome de classes que não irão correr mais, e isso é um grande ponto.</p>
<p>A versão Cake3 será totalmente reformulada e vale a pena acompanhar o <a href="http://code.cakephp.org/cake3">repositório</a> o que está por vir.</p>
<p>Em paralelo está sendo desenvolvido o <a href="http://code.cakephp.org/cakephp2">CakePHP 2</a>, que será um refactoring do código do CakePHP 1.2 para PHP 5 para rodar em strict com o PHP 5.</p>
]]></content:encoded>
			<wfw:commentRss>http://cobaia.net/2009/08/novas-versoes-do-cakephp-cakephp-1-2-cakephp-2-e-cake-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP 1.2 problemas de Encode UTF-8 ISO-8859-1</title>
		<link>http://cobaia.net/2009/08/cakephp-1-2-problemas-de-encode-utf-8-iso-8859-1/</link>
		<comments>http://cobaia.net/2009/08/cakephp-1-2-problemas-de-encode-utf-8-iso-8859-1/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 14:59:03 +0000</pubDate>
		<dc:creator>Vinícius Krolow</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://cobaia.net/?p=584</guid>
		<description><![CDATA[Seguido várias pessoas tem problemas com encode no desenvolvimento com CakePHP 1.2, são pequenos erros que levam a fazer isso, para solucionar os mesmos normalmente é simples, porém vou buscar descrever aqui onde a maioria pode ocorrer: Database Config No config/database.php, onde definimos a conexão a base de dados do CakePHP, é possível definir nomes [...]]]></description>
			<content:encoded><![CDATA[<p>Seguido várias pessoas tem problemas com encode no desenvolvimento com CakePHP 1.2, são pequenos erros que levam a fazer isso, para solucionar os mesmos normalmente é simples, porém vou buscar descrever aqui onde a maioria pode ocorrer:</p>
<h3>Database Config</h3>
<p>No <code>config/database.php</code>, onde definimos a conexão a base de dados do CakePHP, é possível definir nomes de atributos que serão os nomes do tipo de conexão a base de dados.</p>
<p>Exemplo:</p>

<div class="wp_codebox"><table><tr id="p5844"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
</pre></td><td class="code" id="p584code4"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> DATABASE_CONFIG <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$default</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>
		<span style="color: #0000ff;">'driver'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'mysql'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'persistent'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'host'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'localhost'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'login'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'root'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'password'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'root'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'database'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'abccc'</span><span style="color: #339933;">,</span>
		<span style="color: #0000ff;">'encoding'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'utf8'</span><span style="color: #339933;">,</span>
	<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>O importante aqui é definir o hash enconding no array do attributo da sua configuração de banco, no caso foi definido utf8 (sem o hífen).</p>
<h3>Aplicação Charset</h3>
<p>No arquivo <code>config/core.php</code>, existe a configuração de encoding a ser definida para aplicação:</p>

<div class="wp_codebox"><table><tr id="p5845"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p584code5"><pre class="php" style="font-family:monospace;"><span style="color: #009933; font-style: italic;">/**
 * Application wide charset encoding
 */</span>
	Configure<span style="color: #339933;">::</span><span style="color: #004000;">write</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'App.encoding'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'UTF-8'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Sete nela o mesmo encode que você está usando ao longo da aplicação.</p>
<h3>Charset do HTML</h3>
<p>Outro local que definimos o encode da aplicação agora no caso o encode do HTML, é no helper Html, no layout verificar o:</p>

<div class="wp_codebox"><table><tr id="p5846"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p584code6"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php <span style="color: #b1b100;">echo</span> <span style="color: #000088;">$html</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">charset</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Por padrão o arquivo <code>views/layouts/default.ctp</code> já contei a impressão do meta charset, e não é necessário passar parâmetro para o mesmo, visto que já foi definido no <code>config/core.php</code> o encoding default da aplicação, logo o HtmlHelper pega o que foi definido no <code>config/core.php</code>. </p>
<p>Se o seu arquivo de layout não contem a sua adição pode ser necessária.</p>
<h3>Database</h3>
<p>Por último se continuar ainda com problemas de encoding, é necessário verificar seu banco de dados criado, verifique se o mesmo está setado com o encode esperado, assim como as tabelas e os atributos do tipo string estão também usando o mesmo encode.</p>
<h3>Files</h3>
<p>Outra verificação a ser feita é o encode dos arquivos, vale lembrar que os arquivos PHP devem estar no mesmo encode do resto da aplicação, para verificar isso no linux você pode usar o comando file: <code>file arquivo.php</code>, ele irá enformar o encode do arquivo, caso esteja errado converta o arquivo para o encode correto.</p>
<p>Esses processos são triviais ao longo do desenvolvimento com o CakePHP, e para aqueles que estão com algum problema provavelmente, algum desses processos descritos devem estar levando a sua aplicação CakePHP a apresentar esse tipo de error.</p>
]]></content:encoded>
			<wfw:commentRss>http://cobaia.net/2009/08/cakephp-1-2-problemas-de-encode-utf-8-iso-8859-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CakePHP Model sem Tabela</title>
		<link>http://cobaia.net/2009/07/cakephp-model-sem-tabela/</link>
		<comments>http://cobaia.net/2009/07/cakephp-model-sem-tabela/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 14:06:09 +0000</pubDate>
		<dc:creator>Vinícius Krolow</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://cobaia.net/?p=574</guid>
		<description><![CDATA[Algumas vezes precisamos de modelos sem tabela do banco de dados, e para fazer isso no CakePHP, temos um attributo que definimos o uso ou não de tabelas no modelo: 1 2 3 4 5 6 7 &#60; ?php class User extends AppModel &#123; &#160; public $useTable = false; &#160; &#125; ?&#62;]]></description>
			<content:encoded><![CDATA[<p>Algumas vezes precisamos de modelos sem tabela do banco de dados, e para fazer isso no CakePHP, temos um attributo que definimos o uso ou não de tabelas no modelo:</p>

<div class="wp_codebox"><table><tr id="p5748"><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code" id="p574code8"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> User <span style="color: #000000; font-weight: bold;">extends</span> AppModel <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</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>
&nbsp;
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://cobaia.net/2009/07/cakephp-model-sem-tabela/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Download apresentações do CakeFest3 &#8211; Berlin 2009</title>
		<link>http://cobaia.net/2009/07/download-apresentacoes-do-cakefest3-berlin-2009/</link>
		<comments>http://cobaia.net/2009/07/download-apresentacoes-do-cakefest3-berlin-2009/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 14:46:11 +0000</pubDate>
		<dc:creator>Vinícius Krolow</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://cobaia.net/?p=572</guid>
		<description><![CDATA[Ocorreu nesse mês em Berlin o CakeFest3, para as pessoas como eu, que não puderam se fazer presente no evento, vale a pena da uma olhada no material das apresentações que rolaram por lá. Para visualizar o material e fazer o download, acesse esse link.]]></description>
			<content:encoded><![CDATA[<p>Ocorreu nesse mês em Berlin o <a href="http://cakefest.org/">CakeFest3</a>, para as pessoas como eu, que não puderam se fazer presente no evento, vale a pena da uma olhada no material das apresentações que rolaram por lá.</p>
<p>Para visualizar o material e fazer o download, <a href="http://cakephp.org/downloads/CakeFest/CakeFest%203%20-%20Berlin%202009">acesse esse link</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cobaia.net/2009/07/download-apresentacoes-do-cakefest3-berlin-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CakePHP 1.2: Models retornar apenas o necessário</title>
		<link>http://cobaia.net/2009/05/cakephp-12-models-retornar-apenas-o-necessario/</link>
		<comments>http://cobaia.net/2009/05/cakephp-12-models-retornar-apenas-o-necessario/#comments</comments>
		<pubDate>Sat, 30 May 2009 04:43:22 +0000</pubDate>
		<dc:creator>Vinícius Krolow</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://cobaia.net/?p=551</guid>
		<description><![CDATA[No CakePHP 1.2, ficou mais fácil retornarmos do nossos modelos apenas aquilo o que realmente esperamos, no core do CakePHP 1.2, foi adicionado o behavior Containable, o qual se propõem, a filtrar o relacionamentos entre os modelos no CakePHP. Com este, conseguimos quando fazemos retrive em algum modelo, fazer com que ele traga justamente aquilo [...]]]></description>
			<content:encoded><![CDATA[<p>No <a href="http://cakephp.org/">CakePHP 1.2</a>, ficou mais fácil retornarmos do nossos modelos apenas aquilo o que realmente esperamos, no core do CakePHP 1.2, foi adicionado o <a href="http://book.cakephp.org/view/474/Containable">behavior Containable</a>, o qual se propõem, a filtrar o relacionamentos entre os modelos no CakePHP.</p>
<p>Com este, conseguimos quando fazemos retrive em algum modelo, fazer com que ele traga justamente aquilo que achamos pertinente, ou seja, apenas o resultado desejado, com isso poupando dados redundantes, assim como melhorando a performance por o modelo deixar, de trazer relacionamentos que não são necessários.</p>
<p>O uso do mesmo no CakePHP, é muito simples, basta chamar ele no modelo, que julga pertinente, ou adicionar no AppModel para que todos os modelos herdem esse behavior, Countaible.</p>

<div class="wp_codebox"><table><tr id="p55116"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p551code16"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> AppModel <span style="color: #000000; font-weight: bold;">extends</span> Model <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000088;">$actsAs</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Containable'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>ou on the fly:</p>

<div class="wp_codebox"><table><tr id="p55117"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p551code17"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Modelo</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Behaviors</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">attach</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Containable'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Após a importação seu uso é simples, imaginamos um ambiente onde temos os seguintes modelos:</p>
<p><code>Post, User, Comment, Tag</code>, onde:</p>

<div class="wp_codebox"><table><tr id="p55118"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p551code18"><pre class="php" style="font-family:monospace;">Post belongsTo User
Post hasMany Comment
Post hasAndBelongsToMany Tag</pre></td></tr></table></div>

<p>Agora supúnhamos que desejamos fazer uma listagem dos últimos posts, logo só precisamos exibir os dados, do Post, o User que escreveu esse Post e as Tags desse post.</p>

<div class="wp_codebox"><table><tr id="p55119"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p551code19"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">contain</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'User'</span><span style="color: #339933;">,</span><span style="color: #0000ff;">'Tag'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
debug<span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">find</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'all'</span><span style="color: #339933;">,</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'limit'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #cc66cc;">10</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>outro exemplo:</p>

<div class="wp_codebox"><table><tr id="p55120"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p551code20"><pre class="php" style="font-family:monospace;">     <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">contain</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Comment.author = &quot;Gabriela&quot;'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Com isso filtramos os resultados que o find do Post deve trazer, isso pode ser feito com diversos relacionamentos:</p>

<div class="wp_codebox"><table><tr id="p55121"><td class="line_numbers"><pre>1
2
</pre></td><td class="code" id="p551code21"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">User</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">contain</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Profile'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Scrap'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Scrap.User'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Album.Photo'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">User</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">find</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'all'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table></div>

<p>Conseguimos definir os relacionamentos entre os modelos que desejamos trazer, é uma boa alternativa para o:</p>

<div class="wp_codebox"><table><tr id="p55122"><td class="line_numbers"><pre>1
</pre></td><td class="code" id="p551code22"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Modelo</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">recursive</span></pre></td></tr></table></div>

<p>Resumindo o Containable é sempre uma grande opção, na ora de usar o find, pois com eles conseguimos definir exatamente o que desejamos que o find traga para nós.</p>
]]></content:encoded>
			<wfw:commentRss>http://cobaia.net/2009/05/cakephp-12-models-retornar-apenas-o-necessario/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>E-Book Free, Livro grátis de CakePHP: &#8220;Super awesome advanced CakePHP tips&#8221;</title>
		<link>http://cobaia.net/2009/05/e-book-free-livro-gratis-de-cakephp-super-awesome-advanced-cakephp-tips/</link>
		<comments>http://cobaia.net/2009/05/e-book-free-livro-gratis-de-cakephp-super-awesome-advanced-cakephp-tips/#comments</comments>
		<pubDate>Fri, 15 May 2009 02:00:15 +0000</pubDate>
		<dc:creator>Vinícius Krolow</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[livros]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://cobaia.net/?p=547</guid>
		<description><![CDATA[Matt Curry  publicou em seu blog, um lançamento de um livro de CakePHP, que não fala só o básico do CakePHP, como vemos na maioria das vezes, é um livro com uma abordagem mais direta para quem realmente já trabalho com o CakePHP. Então você agora pode ter um livro free (totalmente grátis), que satisfaça [...]]]></description>
			<content:encoded><![CDATA[<p>Matt Curry  publicou em seu blog, um lançamento de um livro de CakePHP, que não fala só o básico do CakePHP, como vemos na maioria das vezes, é um livro com uma abordagem mais direta para quem realmente já trabalho com o CakePHP.</p>
<p>Então você agora pode ter um livro free (totalmente grátis), que satisfaça algumas de suas dúvidas mais avançadas em CakePHP, eu fiz o download do livro hoje mesmo, e já comecei a dar uma lida, quem está apto com inglês pode fazer uma fácil leitura do mesmo, para aqueles que não estão, proponho aqui para comunidade, se juntarmos para fazer uma tradução desse livro.</p>
<p>O <a href="http://www.pseudocoder.com/mint/pepper/orderedlist/downloads/download.php?file=http%3A//www.pseudocoder.com/Super_Awesome_Advanced_CakePHP_Tips.pdf">download do livro de CakePHP</a>, pode ser feito aqui, e o post da publicação de <a href="http://www.pseudocoder.com/archives/2009/05/13/free-cakephp-e-book-super-awesome-advanced-cakephp-tips/">Matt Curry você pode conferir aqui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cobaia.net/2009/05/e-book-free-livro-gratis-de-cakephp-super-awesome-advanced-cakephp-tips/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CakePHP FileUpload Component</title>
		<link>http://cobaia.net/2009/05/cakephp-fileupload-component/</link>
		<comments>http://cobaia.net/2009/05/cakephp-fileupload-component/#comments</comments>
		<pubDate>Fri, 01 May 2009 04:04:11 +0000</pubDate>
		<dc:creator>Vinícius Krolow</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://cobaia.net/?p=531</guid>
		<description><![CDATA[Fazendo upload facilmente com o CakePHP, isso é proposto com o FileUpload o download do código do componente pode ser feito aqui, o mesmo deve ser salvo dentro da pasta de sua aplicação em, controllers/components com o nome de file_upload.php. Para usar o mesmo é muito simples no controller que vamos fazer o upload usamos: [...]]]></description>
			<content:encoded><![CDATA[<p>Fazendo upload facilmente com o CakePHP, isso é proposto com o <a href="http://bakery.cakephp.org/articles/view/file-upload-component-w-automagic-model-optional">FileUpload</a> o download do código do componente pode ser feito <a href="http://bakery.cakephp.org/articles/download_code/927/block/5">aqui</a>, o mesmo deve ser salvo dentro da pasta de sua aplicação em, <code>controllers/components</code> com o nome de <code>file_upload.php</code>.</p>
<p>Para usar o mesmo é muito simples no controller que vamos fazer o upload usamos:</p>

<div class="wp_codebox"><table><tr id="p53126"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
</pre></td><td class="code" id="p531code26"><pre class="php" style="font-family:monospace;">	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> beforeFilter<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FileUpload</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fileModel</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Attachment'</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FileUpload</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fields</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'file_name'</span><span style="color: #339933;">,</span> 
										  <span style="color: #0000ff;">'type'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'file_type'</span><span style="color: #339933;">,</span> 
										  <span style="color: #0000ff;">'size'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'file_size'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FileUpload</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">allowedTypes</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'image/jpeg'</span><span style="color: #339933;">,</span>
											    <span style="color: #0000ff;">'text/plain'</span><span style="color: #339933;">,</span>
												<span style="color: #0000ff;">'image/png'</span><span style="color: #339933;">,</span>
												<span style="color: #0000ff;">'application/msword'</span><span style="color: #339933;">,</span>
												<span style="color: #0000ff;">'application/zip'</span><span style="color: #339933;">,</span>
												<span style="color: #0000ff;">'image/gif'</span><span style="color: #339933;">,</span>
												<span style="color: #0000ff;">'image/bmp'</span><span style="color: #339933;">,</span>
												<span style="color: #0000ff;">'application/excel'</span><span style="color: #339933;">,</span>
												<span style="color: #0000ff;">'application/pdf'</span><span style="color: #339933;">,</span>
												<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FileUpload</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">uploadDir</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'files'</span> <span style="color: #339933;">.</span> DS <span style="color: #339933;">.</span> <span style="color: #0000ff;">'attachments'</span><span style="color: #339933;">;</span>
		parent<span style="color: #339933;">::</span><span style="color: #004000;">beforeFilter</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Onde <code>$this->FileUpload->fileModel</code> é o modelo que referencia onde vai ser salvo as informações do arquivo do upload, caso não seja necessário salvar no banco passe null para esse atributo.</p>
<p><code>$this->FileUpload->fields</code> se referencia as campos do banco de dados que vai salvar as informações do arquivo.</p>
<p><code>$this->FileUpload->allowedTypes</code> um array com os tipos de mime types permitidos para fazer o upload.</p>
<p><code>$this->FileUpload->uploadDir</code> diretório no file system onde deve ser salvo o arquivo.</p>
<p><strong>No seu action de cadastramento teremos:</strong></p>

<div class="wp_codebox"><table><tr id="p53127"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p531code27"><pre class="php" style="font-family:monospace;">	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> admin_add<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><a href="http://www.php.net/empty"><span style="color: #990000;">empty</span></a><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;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Attachment</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">validates</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FileUpload</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">success</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Session</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFlash</span><span style="color: #009900;">&#40;</span>__<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'The Attachment has been saved'</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: #339933;">;</span>
				<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">redirect</span><span style="color: #009900;">&#40;</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'action'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'index'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Session</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFlash</span><span style="color: #009900;">&#40;</span>__<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'The Attachment could not be saved. Please, try again.'</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: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>	<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Para editar o mesmo processo pode ser usado.</p>
<p><strong>Para deletar:</strong></p>

<div class="wp_codebox"><table><tr id="p53128"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code" id="p531code28"><pre class="php" style="font-family:monospace;">	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> admin_delete<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Session</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFlash</span><span style="color: #009900;">&#40;</span>__<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Invalid id for Attachment'</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: #339933;">;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">redirect</span><span style="color: #009900;">&#40;</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'action'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'index'</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #000088;">$attachment</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Attachment</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">findById</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</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;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">FileUpload</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">removeFile</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$attachment</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Attachment'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'file_name'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> 
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Attachment</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">del</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Session</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFlash</span><span style="color: #009900;">&#40;</span>__<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Attachment deleted'</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: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
    	<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Session</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFlash</span><span style="color: #009900;">&#40;</span>__<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Not found the file'</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: #339933;">;</span>
    	<span style="color: #009900;">&#125;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">redirect</span><span style="color: #009900;">&#40;</span><a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'action'</span><span style="color: #339933;">=&gt;</span><span style="color: #0000ff;">'index'</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>

]]></content:encoded>
			<wfw:commentRss>http://cobaia.net/2009/05/cakephp-fileupload-component/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CakePHP ZipComponent</title>
		<link>http://cobaia.net/2009/05/cakephp-zipcomponent/</link>
		<comments>http://cobaia.net/2009/05/cakephp-zipcomponent/#comments</comments>
		<pubDate>Fri, 01 May 2009 03:52:16 +0000</pubDate>
		<dc:creator>Vinícius Krolow</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://cobaia.net/?p=528</guid>
		<description><![CDATA[Precisava criar um componete muito simples para o PHP, poderia eu nem ter criado um coponent, pois minha necessidade era apenas descompactar arquivos zip, para um determinado diretório, para isso no PHP 5 temos a classe ZipArchive, porém o simples pode complicar então resolvi desenvolver a feature de descompactar o arquivo Zip, utilizando em forma [...]]]></description>
			<content:encoded><![CDATA[<p>Precisava criar um componete muito simples para o PHP, poderia eu nem ter criado um coponent, pois minha necessidade era apenas descompactar arquivos zip, para um determinado diretório, para isso no PHP 5 temos a classe <a href="http://br2.php.net/manual/pt_BR/ref.zip.php">ZipArchive</a>, porém o simples pode complicar então resolvi desenvolver a feature de descompactar o arquivo Zip, utilizando em forma de component.</p>
<p><strong>Segue o mesmo a seguir:</strong></p>

<div class="wp_codebox"><table><tr id="p52831"><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
25
26
27
28
29
30
31
32
33
34
35
</pre></td><td class="code" id="p528code31"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
<span style="color: #000000; font-weight: bold;">class</span> ZipComponent <span style="color: #000000; font-weight: bold;">extends</span> Object <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000088;">$zipFile</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$zip</span><span style="color: #339933;">;</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000088;">$extractDirectory</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> setFile<span style="color: #009900;">&#40;</span><span style="color: #000088;">$zipFile</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">zipFile</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$zipFile</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">zip</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> ZipArchive<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> setExtractDirectory<span style="color: #009900;">&#40;</span><span style="color: #000088;">$extractDirectory</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">extractDirectory</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$extractDirectory</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <a href="http://www.php.net/extract"><span style="color: #990000;">extract</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$zipFile</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">,</span> <span style="color: #000088;">$extractDirectory</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><a href="http://www.php.net/is_null"><span style="color: #990000;">is_null</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$zipFile</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setFile</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$zipFile</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><a href="http://www.php.net/is_null"><span style="color: #990000;">is_null</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$extractDirectory</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setExtractDirectory</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$extractDirectory</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">zip</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">open</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">zipFile</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">zip</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">extractTo</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">extractDirectory</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">zip</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    		<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<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>
&nbsp;
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Para utilizar o mesmo basta no controller usar:</p>

<div class="wp_codebox"><table><tr id="p52832"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code" id="p528code32"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000088;">$components</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'Zip'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> add<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">Zip</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">extract</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$zipFile</span><span style="color: #339933;">,</span> <span style="color: #000088;">$directory</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">print</span> <span style="color: #0000ff;">'yes'</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #b1b100;">print</span> <span style="color: #0000ff;">'no'</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Preciso melhorar o component, verificar se o diretório tem permissão de escrita, verificar os arquivos dentro do zip que são válidos e excluir os não validos, mas por início ele está assim e funciona.</p>
]]></content:encoded>
			<wfw:commentRss>http://cobaia.net/2009/05/cakephp-zipcomponent/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Zend Framework 1.8, RAD version</title>
		<link>http://cobaia.net/2009/04/zend-framework-18-rad-version/</link>
		<comments>http://cobaia.net/2009/04/zend-framework-18-rad-version/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 22:59:22 +0000</pubDate>
		<dc:creator>Vinícius Krolow</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programação]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[zend framework]]></category>

		<guid isPermaLink="false">http://cobaia.net/?p=524</guid>
		<description><![CDATA[A Zend anuncia a nova versão do Zend Framework, que traz grandes novidades, sendo a primeira versão do framework, usando boas práticas, além de agora ser um Rapid Application Development. Rapid Application Development (Desenvolvimento rápido de Aplicações) Tais como outros frameworks, cakephp, code ignator, o Zend Framework agora trás gerador de código, tudo graças ao [...]]]></description>
			<content:encoded><![CDATA[<p>A Zend anuncia a nova versão do Zend Framework, que traz grandes novidades, sendo a primeira versão do framework, usando boas práticas, além de agora ser um Rapid Application Development.</p>
<h3>Rapid Application Development (Desenvolvimento rápido de Aplicações)</h3>
<p>Tais como outros frameworks, cakephp, code ignator, o Zend Framework agora trás gerador de código, tudo graças ao Zend_Tool e o Zend_Application.</p>
<p>Com ele é possível agora fazermos diversas tarefas triviais do desenvolvimento de uma aplicação, tais como criar um novo projeto, criar controllers, views, models. Podendo ser feitas essas tarefas por linha de comando tal como mostra a imagem a seguir:</p>
<p><img class="alignnone" title="Zend Tool" src="http://framework.zend.com/manual/en/figures/zend.tool.framework.clihelp.png" alt="" width="778" height="497" /></p>
<p>O Zend_Application provêm padrões de objetos para o bootstraping, sendo assim facilitando na hora da criação do mesmo, para se dar início ao desenvolvimento de projeto.</p>
<p>Essas novidades chamaram muita atenção, pois o que acabava se reclamando muito é da árdua tarefa de desenvolver com a Zend é a criação de todos os arquivos do desenvolvimento, por sua vez o Zend Framework buscando ser um framework RAD podemos se encorajar a continuar a usar esse bom framework para vários projetos até aqueles que temos pouco tempo de desenvolvimento, pois a arquitetura desse framework é muito boa, muito bem planejada e faz bom uso do POO.</p>
<p>Algo que ainda falta é os geradores de CRUD, que ao meu ver em pouco tempo teremos o mesmo integrado ao ZF.</p>
<p>Outras novidades dessa versão assim como a descrição do Zend_Tool e Zend_Application pode ser <a href="http://devzone.zend.com/article/4524-Zend-Framework-1.8.0-Released">visto aqui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://cobaia.net/2009/04/zend-framework-18-rad-version/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Coding Standard, boas maneiras no código: String e Array</title>
		<link>http://cobaia.net/2009/03/php-coding-standard-boas-maneiras-no-codigo-parte-3/</link>
		<comments>http://cobaia.net/2009/03/php-coding-standard-boas-maneiras-no-codigo-parte-3/#comments</comments>
		<pubDate>Sun, 22 Mar 2009 02:50:41 +0000</pubDate>
		<dc:creator>Vinícius Krolow</dc:creator>
				<category><![CDATA[cakephp]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programação]]></category>

		<guid isPermaLink="false">http://cobaia.net/?p=493</guid>
		<description><![CDATA[Dando continuação ao coding standard, esse post irá abordar sobre strings e arrays. 3 &#8211; Strings No PHP temos dois operadores de strings &#8220;&#8221; e &#8221;. 3.1 &#8211; Strings literais, apenas texto: 1 2 3 &#60; ?php $title = 'Título'; ?&#62; Quando não temos variaveis no meu da declaração de string, é usável apenas aspas [...]]]></description>
			<content:encoded><![CDATA[<p>Dando continuação ao coding standard, esse post irá abordar sobre <code>strings</code> e <code>arrays</code>.</p>
<h2>3 &#8211; Strings</h2>
<p>No PHP temos dois operadores de strings &#8220;&#8221; e &#8221;.</p>
<h3>3.1 &#8211; Strings literais, apenas texto:</h3>

<div class="wp_codebox"><table><tr id="p49341"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p493code41"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
    <span style="color: #000088;">$title</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Título'</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>Quando não temos variaveis no meu da declaração de string, é usável apenas aspas simples.</p>
<h3>3.2 &#8211; String literais com aspas simples no texto:</h3>

<div class="wp_codebox"><table><tr id="p49342"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p493code42"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
    <span style="color: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;SELECT * FROM `newspaper` WHERE name LIKE 'Janeiro%'&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<h3>3.3 &#8211; String com variáveis:</h3>
<p>Quando temos que mostrar uma variável no meio do texto, o menor uso possível da concatenação é melhor</p>

<div class="wp_codebox"><table><tr id="p49343"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p493code43"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
    <span style="color: #000088;">$message</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Hello, <span style="color: #006699; font-weight: bold;">{$name}</span> welcome!&quot;</span><span style="color: #339933;">;</span>
    <span style="color: #000088;">$message</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;Hello, <span style="color: #006699; font-weight: bold;">$name</span> welcome&quot;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p>O uso das chaves deixa mais visível a variável, porém as duas formas são apropriadas e aceitadas normalmente.</p>
<h3>3.4 &#8211; String com múltiplas linhas:</h3>

<div class="wp_codebox"><table><tr id="p49344"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p493code44"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
    <span style="color: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'SELECT * FROM newspapers AS N'</span>
            <span style="color: #339933;">.</span> <span style="color: #0000ff;">'INNER JOIN images AS I ON (I.id=N.image_id)'</span>
	    <span style="color: #339933;">.</span> <span style="color: #0000ff;">'INNER JOIN users AS U ON (U.id=N.user_id)'</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<h3>3.5 &#8211; String com concatenação:</h3>

<div class="wp_codebox"><table><tr id="p49345"><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code" id="p493code45"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
    <span style="color: #000088;">$title</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">'Welcome'</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$name</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">' '</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$link</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">logout</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<h2>4 &#8211; Arrays:</h2>
<p><code>Arrays</code> são vetores de armazenação de dados, podendo ser vetores, matrizes. No PHP existem dois tipos de <code>arrays</code>, os <code>arrays</code> com índice numérico e os com índice com <code>strings</code> que também são chamados de <code>hash</code><code>, ou </code><code>arrays associativos</code>.</p>
<h3>4.1 &#8211; Arrays numéricos:</h3>
<p>Em <code>arrays</code> numéricos os elementos ficam um ao lado do outro, porém se for grande uma quebra de linha para manter o padrão de no máximo <code>80 caracteres</code> por linha, para passar <code>strings</code> para o <code>array</code>, o uso de aspas simples se da.</p>

<div class="wp_codebox"><table><tr id="p49346"><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code" id="p493code46"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
    <span style="color: #000088;">$data</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'CakePHP'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Zend'</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">2</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Cobaia'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'PHP'</span><span style="color: #339933;">,</span> 
                       <span style="color: #0000ff;">'Vinícius'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'Krolow'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<h3>4.2 Array associativos:</h3>
<p>Em mapas de <code>array</code> a quebra de linha após cada índice, deixa com uma maior legibilidade o código, e também se da o uso de aspas simples, para o nome da referencia, assim como para a <code>string</code> associada.</p>

<div class="wp_codebox"><table><tr id="p49347"><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code" id="p493code47"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
    <span style="color: #000088;">$fields</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Vinícius'</span><span style="color: #339933;">,</span>
                    <span style="color: #0000ff;">'surname'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Krolow'</span><span style="color: #339933;">,</span>
                    <span style="color: #0000ff;">'url'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'http://cobaia.net'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<p><code>Múltiplos arrays</code></p>

<div class="wp_codebox"><table><tr id="p49348"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code" id="p493code48"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">&lt;</span> ?php
    <span style="color: #000088;">$fields</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Vinícius'</span><span style="color: #339933;">,</span>
                    <span style="color: #0000ff;">'surname'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'Krolow'</span><span style="color: #339933;">,</span>
                    <span style="color: #0000ff;">'url'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'http://cobaia.net'</span><span style="color: #339933;">,</span>
                    <span style="color: #0000ff;">'posts'</span> <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'test'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'test'</span><span style="color: #339933;">,</span>
                                     <span style="color: #0000ff;">'new'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'new'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
    <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://cobaia.net/2009/03/php-coding-standard-boas-maneiras-no-codigo-parte-3/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

