<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comentários sobre: Fluent Interface no PHP</title>
	<atom:link href="http://garotosopa.wordpress.com/2008/10/29/fluent-interface-php/feed/" rel="self" type="application/rss+xml" />
	<link>http://garotosopa.wordpress.com/2008/10/29/fluent-interface-php/</link>
	<description>juntando as letrinhas desde 1986</description>
	<lastBuildDate>Thu, 05 Nov 2009 21:07:53 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Por: garotosopa</title>
		<link>http://garotosopa.wordpress.com/2008/10/29/fluent-interface-php/#comment-268</link>
		<dc:creator>garotosopa</dc:creator>
		<pubDate>Thu, 16 Jul 2009 23:04:40 +0000</pubDate>
		<guid isPermaLink="false">http://garotosopa.wordpress.com/?p=106#comment-268</guid>
		<description>Se o que você está montando é uma instância de Cache, e nela quer chamar um método como processar(), aí me parece que não tem mágica. Só incluindo o -&gt;processar() no final de tudo mesmo.

Nesta implementação de envio de e-mail em Java http://code.google.com/p/fluentmailapi/ é utilizado o método send() no final. Talvez seja o mesmo raciocínio no seu caso.</description>
		<content:encoded><![CDATA[<p>Se o que você está montando é uma instância de Cache, e nela quer chamar um método como processar(), aí me parece que não tem mágica. Só incluindo o -&gt;processar() no final de tudo mesmo.</p>
<p>Nesta implementação de envio de e-mail em Java <a href="http://code.google.com/p/fluentmailapi/" rel="nofollow">http://code.google.com/p/fluentmailapi/</a> é utilizado o método send() no final. Talvez seja o mesmo raciocínio no seu caso.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: José Cláudio</title>
		<link>http://garotosopa.wordpress.com/2008/10/29/fluent-interface-php/#comment-267</link>
		<dc:creator>José Cláudio</dc:creator>
		<pubDate>Thu, 16 Jul 2009 22:53:19 +0000</pubDate>
		<guid isPermaLink="false">http://garotosopa.wordpress.com/?p=106#comment-267</guid>
		<description>Para imprimir eu uso o __tostring, que é chamado sempre que dou um echo em algum lugar. E se eu quiser só executar uma ação como essa, sem imprimir nada? Qual método mágico usaria?

	needCache()
			-&gt;controller(&#039;noticias&#039;)
		-&gt;and()
			-&gt;controller(&#039;users&#039;)
			-&gt;action(&#039;login&#039;)
			-&gt;action(&#039;register&#039;);


Não achei um compatível no manual do php. Poderia me dar a luz?</description>
		<content:encoded><![CDATA[<p>Para imprimir eu uso o __tostring, que é chamado sempre que dou um echo em algum lugar. E se eu quiser só executar uma ação como essa, sem imprimir nada? Qual método mágico usaria?</p>
<p>	needCache()<br />
			-&gt;controller(&#8216;noticias&#8217;)<br />
		-&gt;and()<br />
			-&gt;controller(&#8216;users&#8217;)<br />
			-&gt;action(&#8216;login&#8217;)<br />
			-&gt;action(&#8216;register&#8217;);</p>
<p>Não achei um compatível no manual do php. Poderia me dar a luz?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: José Cláudio</title>
		<link>http://garotosopa.wordpress.com/2008/10/29/fluent-interface-php/#comment-262</link>
		<dc:creator>José Cláudio</dc:creator>
		<pubDate>Wed, 15 Jul 2009 12:12:40 +0000</pubDate>
		<guid isPermaLink="false">http://garotosopa.wordpress.com/?p=106#comment-262</guid>
		<description>É verdade. Não havia me tocado que o echo é quem vai imprimir. Foi bobeira mesmo. hehehe
Valeu pela luz.</description>
		<content:encoded><![CDATA[<p>É verdade. Não havia me tocado que o echo é quem vai imprimir. Foi bobeira mesmo. hehehe<br />
Valeu pela luz.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: garotosopa</title>
		<link>http://garotosopa.wordpress.com/2008/10/29/fluent-interface-php/#comment-260</link>
		<dc:creator>garotosopa</dc:creator>
		<pubDate>Wed, 15 Jul 2009 00:02:59 +0000</pubDate>
		<guid isPermaLink="false">http://garotosopa.wordpress.com/?p=106#comment-260</guid>
		<description>Fala, José!

A teoria base pra fluent interface é toda essa mesmo, acho que não tem muito mais o que explorar. A questão é só parar pra implementar os melhores métodos e fluxos pra resolver cada problema.

Nesse caso do formulário que você falou, se o que você precisa é renderizar o resultado HTML, talvez funcione com __toString() sem quebrar a lógica. Algo do tipo:

$form = new MeuFormFluente();
$form-&gt;comInput(&#039;name&#039;)-&gt;deRotulo(&#039;Nome&#039;)-&gt;iniciadoCom(&#039;Seu nome&#039;)
     -&gt;e()
     -&gt;comTextarea(&#039;comment&#039;)-&gt;deRotulo(&#039;Comentário&#039;)-&gt;iniciadoCom(&#039;Digite aqui&#039;)
     -&gt;que()
     -&gt;submetePara(&#039;/salvar.php&#039;);

Supondo que isso fique no seu controller e que você passe o objeto para o view normalmente. No view, para fazer apenas echo $form, é só colocar a lógica de renderização no método __toString() do objeto. O PHP vai chamá-lo automaticamente.

É possível ainda colocar o echo direto ali na frente da montagem do objeto, mas não sei se isso ficaria muito claro.

Foi suposto que os métodos comInput e comTextarea da API acima passam o contexto para objeto do tipo Elemento (ou algo assim), de forma que o chain com métodos como deRotulo e iniciadoCom ficam nessa classe Elemento, e não no Form diretamente.

Pra continuar inserindo componentes, nessa API, entra o método e() ou que()  da classe Elemento, que apenas retorna o contexto de volta para o Form. Talvez outros métodos possam ser necessários pra deixar as chamadas com cara de português.

Isso poderia ser contornado de outras formas, mas esse pra mim é o método mais simples e eficaz tecnicamente.

De uma forma geral, acho que o que tá acima deveria ficar numa classe especializada, por exemplo class FormComentario, e aqueles comandos ficariam num __construct. Assim, no seu controller você faria apenas $form = new FormComentario(); e ele estaria todo montado.

Uma vez com o form todo encapsulado, já não tenho mais certeza se a (possível) complexidade de montar uma interface fluente consistente vai valer a pena. Mas de qualquer forma, vale experimentar e ver no que vai dar.

Se você fizer a classe de formulário ou alguma outra, me avisa aqui, pode ser muito útil =)


Abs,
Diogo</description>
		<content:encoded><![CDATA[<p>Fala, José!</p>
<p>A teoria base pra fluent interface é toda essa mesmo, acho que não tem muito mais o que explorar. A questão é só parar pra implementar os melhores métodos e fluxos pra resolver cada problema.</p>
<p>Nesse caso do formulário que você falou, se o que você precisa é renderizar o resultado HTML, talvez funcione com __toString() sem quebrar a lógica. Algo do tipo:</p>
<p>$form = new MeuFormFluente();<br />
$form-&gt;comInput(&#8216;name&#8217;)-&gt;deRotulo(&#8216;Nome&#8217;)-&gt;iniciadoCom(&#8216;Seu nome&#8217;)<br />
     -&gt;e()<br />
     -&gt;comTextarea(&#8216;comment&#8217;)-&gt;deRotulo(&#8216;Comentário&#8217;)-&gt;iniciadoCom(&#8216;Digite aqui&#8217;)<br />
     -&gt;que()<br />
     -&gt;submetePara(&#8216;/salvar.php&#8217;);</p>
<p>Supondo que isso fique no seu controller e que você passe o objeto para o view normalmente. No view, para fazer apenas echo $form, é só colocar a lógica de renderização no método __toString() do objeto. O PHP vai chamá-lo automaticamente.</p>
<p>É possível ainda colocar o echo direto ali na frente da montagem do objeto, mas não sei se isso ficaria muito claro.</p>
<p>Foi suposto que os métodos comInput e comTextarea da API acima passam o contexto para objeto do tipo Elemento (ou algo assim), de forma que o chain com métodos como deRotulo e iniciadoCom ficam nessa classe Elemento, e não no Form diretamente.</p>
<p>Pra continuar inserindo componentes, nessa API, entra o método e() ou que()  da classe Elemento, que apenas retorna o contexto de volta para o Form. Talvez outros métodos possam ser necessários pra deixar as chamadas com cara de português.</p>
<p>Isso poderia ser contornado de outras formas, mas esse pra mim é o método mais simples e eficaz tecnicamente.</p>
<p>De uma forma geral, acho que o que tá acima deveria ficar numa classe especializada, por exemplo class FormComentario, e aqueles comandos ficariam num __construct. Assim, no seu controller você faria apenas $form = new FormComentario(); e ele estaria todo montado.</p>
<p>Uma vez com o form todo encapsulado, já não tenho mais certeza se a (possível) complexidade de montar uma interface fluente consistente vai valer a pena. Mas de qualquer forma, vale experimentar e ver no que vai dar.</p>
<p>Se você fizer a classe de formulário ou alguma outra, me avisa aqui, pode ser muito útil =)</p>
<p>Abs,<br />
Diogo</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: José Cláudio</title>
		<link>http://garotosopa.wordpress.com/2008/10/29/fluent-interface-php/#comment-259</link>
		<dc:creator>José Cláudio</dc:creator>
		<pubDate>Tue, 14 Jul 2009 23:32:48 +0000</pubDate>
		<guid isPermaLink="false">http://garotosopa.wordpress.com/?p=106#comment-259</guid>
		<description>Cara, esse teu post é praticamente o único material sobre fluent interface para php da língua portuguesa.
Porque não cria mais uma série de posts?
Seria legal uma classe para gerar formulá&#039;rio..não precisa de todos os inputs, e tals. O maior problema é como saber quando terminamos as configurações, e quando o php deve retornar o resultado.
Alguma dica/</description>
		<content:encoded><![CDATA[<p>Cara, esse teu post é praticamente o único material sobre fluent interface para php da língua portuguesa.<br />
Porque não cria mais uma série de posts?<br />
Seria legal uma classe para gerar formulá&#8217;rio..não precisa de todos os inputs, e tals. O maior problema é como saber quando terminamos as configurações, e quando o php deve retornar o resultado.<br />
Alguma dica/</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Micael Estrázulas</title>
		<link>http://garotosopa.wordpress.com/2008/10/29/fluent-interface-php/#comment-98</link>
		<dc:creator>Micael Estrázulas</dc:creator>
		<pubDate>Tue, 10 Feb 2009 12:35:43 +0000</pubDate>
		<guid isPermaLink="false">http://garotosopa.wordpress.com/?p=106#comment-98</guid>
		<description>Excelente artigo. Parabens pelo blog</description>
		<content:encoded><![CDATA[<p>Excelente artigo. Parabens pelo blog</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Bruno Viana</title>
		<link>http://garotosopa.wordpress.com/2008/10/29/fluent-interface-php/#comment-95</link>
		<dc:creator>Bruno Viana</dc:creator>
		<pubDate>Mon, 19 Jan 2009 23:00:57 +0000</pubDate>
		<guid isPermaLink="false">http://garotosopa.wordpress.com/?p=106#comment-95</guid>
		<description>Muito bom seu artigo. Meu deu várias idéias para melhorar o framework interno da empresa que trabalho.

Meus parabéns!</description>
		<content:encoded><![CDATA[<p>Muito bom seu artigo. Meu deu várias idéias para melhorar o framework interno da empresa que trabalho.</p>
<p>Meus parabéns!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Jonathas Scot</title>
		<link>http://garotosopa.wordpress.com/2008/10/29/fluent-interface-php/#comment-66</link>
		<dc:creator>Jonathas Scot</dc:creator>
		<pubDate>Wed, 10 Dec 2008 22:19:33 +0000</pubDate>
		<guid isPermaLink="false">http://garotosopa.wordpress.com/?p=106#comment-66</guid>
		<description>Diogo, como nosso amigo lawrence fala: &quot;você foi arrasadoramente arrasador&quot;.

Muito bacana seu post, inteligível até para o Designer /pseudo-programador-junior-mirim aqui. 

Show de bola. O melhor foi ver fucionando na sua máquina.

Parabéns.</description>
		<content:encoded><![CDATA[<p>Diogo, como nosso amigo lawrence fala: &#8220;você foi arrasadoramente arrasador&#8221;.</p>
<p>Muito bacana seu post, inteligível até para o Designer /pseudo-programador-junior-mirim aqui. </p>
<p>Show de bola. O melhor foi ver fucionando na sua máquina.</p>
<p>Parabéns.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Leandro Silva</title>
		<link>http://garotosopa.wordpress.com/2008/10/29/fluent-interface-php/#comment-61</link>
		<dc:creator>Leandro Silva</dc:creator>
		<pubDate>Wed, 19 Nov 2008 19:45:04 +0000</pubDate>
		<guid isPermaLink="false">http://garotosopa.wordpress.com/?p=106#comment-61</guid>
		<description>hehehe... bem interessante... parabéns!</description>
		<content:encoded><![CDATA[<p>hehehe&#8230; bem interessante&#8230; parabéns!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Felipe Lucio</title>
		<link>http://garotosopa.wordpress.com/2008/10/29/fluent-interface-php/#comment-53</link>
		<dc:creator>Felipe Lucio</dc:creator>
		<pubDate>Mon, 10 Nov 2008 19:43:58 +0000</pubDate>
		<guid isPermaLink="false">http://garotosopa.wordpress.com/?p=106#comment-53</guid>
		<description>Muito bom o artigo cara!
Simples, direto e com exemplos!

Parabéns e valeu!</description>
		<content:encoded><![CDATA[<p>Muito bom o artigo cara!<br />
Simples, direto e com exemplos!</p>
<p>Parabéns e valeu!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Carlos Kazuo</title>
		<link>http://garotosopa.wordpress.com/2008/10/29/fluent-interface-php/#comment-52</link>
		<dc:creator>Carlos Kazuo</dc:creator>
		<pubDate>Mon, 03 Nov 2008 19:51:04 +0000</pubDate>
		<guid isPermaLink="false">http://garotosopa.wordpress.com/?p=106#comment-52</guid>
		<description>Muito interessante o artigo! =]</description>
		<content:encoded><![CDATA[<p>Muito interessante o artigo! =]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Lawrence Lagerlof</title>
		<link>http://garotosopa.wordpress.com/2008/10/29/fluent-interface-php/#comment-50</link>
		<dc:creator>Lawrence Lagerlof</dc:creator>
		<pubDate>Thu, 30 Oct 2008 13:53:07 +0000</pubDate>
		<guid isPermaLink="false">http://garotosopa.wordpress.com/?p=106#comment-50</guid>
		<description>Nossa. Estou para ver um manual tão bem escrito. Excelente didática, foi direto ao ponto, sem enrolação. Exatamente o que os programadores procuram.

Valeu!</description>
		<content:encoded><![CDATA[<p>Nossa. Estou para ver um manual tão bem escrito. Excelente didática, foi direto ao ponto, sem enrolação. Exatamente o que os programadores procuram.</p>
<p>Valeu!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Guilherme Chapiewski</title>
		<link>http://garotosopa.wordpress.com/2008/10/29/fluent-interface-php/#comment-49</link>
		<dc:creator>Guilherme Chapiewski</dc:creator>
		<pubDate>Thu, 30 Oct 2008 00:53:01 +0000</pubDate>
		<guid isPermaLink="false">http://garotosopa.wordpress.com/?p=106#comment-49</guid>
		<description>Show de bola ;)</description>
		<content:encoded><![CDATA[<p>Show de bola ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Samuca</title>
		<link>http://garotosopa.wordpress.com/2008/10/29/fluent-interface-php/#comment-48</link>
		<dc:creator>Samuca</dc:creator>
		<pubDate>Thu, 30 Oct 2008 00:50:20 +0000</pubDate>
		<guid isPermaLink="false">http://garotosopa.wordpress.com/?p=106#comment-48</guid>
		<description>Muuuuuito foda esse artigo, achei interessantíssimo, e farei meus testes aqui.

Grande abraço.</description>
		<content:encoded><![CDATA[<p>Muuuuuito foda esse artigo, achei interessantíssimo, e farei meus testes aqui.</p>
<p>Grande abraço.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
