<?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>JulioGreff.net &#187; php</title>
	<atom:link href="http://juliogreff.net/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://juliogreff.net</link>
	<description>A mesma web, um novo estilo de desenvolvimento</description>
	<lastBuildDate>Sat, 07 May 2011 17:07:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Frameworks: Por um PHP Menos Ruim</title>
		<link>http://juliogreff.net/frameworks-por-um-php-menos-ruim/</link>
		<comments>http://juliogreff.net/frameworks-por-um-php-menos-ruim/#comments</comments>
		<pubDate>Sun, 15 Jun 2008 01:04:04 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Destaques]]></category>
		<category><![CDATA[Server-Side]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://juliogreff.blog.br/?p=157</guid>
		<description><![CDATA[O PHP não é a linguagem mais &#8220;cool&#8221; para se desenvolver para web no momento. Outras linguagens estão tomando o posto por serem mais compatíveis com o ambiente web que temos hoje. Um dos fatores que mais influencia nessa &#8220;tomada de território&#8221; é a agilidade no desenvolvimento que, aliado aos frameworks dessas linguagens, tornam o [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/codecast-5-frameworks/' rel='bookmark' title='Permanent Link: CodeCast #5 &#8211; Frameworks'>CodeCast #5 &#8211; Frameworks</a></li>
<li><a href='http://juliogreff.net/json-no-php/' rel='bookmark' title='Permanent Link: JSON no PHP'>JSON no PHP</a></li>
<li><a href='http://juliogreff.net/php-orientado-a-objeto/' rel='bookmark' title='Permanent Link: PHP Orientado a Objeto'>PHP Orientado a Objeto</a></li>
<li><a href='http://juliogreff.net/pense-mais-e-codifique-menos/' rel='bookmark' title='Permanent Link: Pense Mais e Codifique Menos'>Pense Mais e Codifique Menos</a></li>
<li><a href='http://juliogreff.net/por-que-projetos-morrem/' rel='bookmark' title='Permanent Link: Por que projetos &#8220;morrem&#8221;?'>Por que projetos &#8220;morrem&#8221;?</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p class="left">
<img src="http://juliogreff.net/wp-uploads/frameworks-por-um-php-menos-ruim.jpg" title="Frameworks - Por Um PHP Menos Ruim" alt="Frameworks - Por Um PHP Menos Ruim" />
</p>
<p>O PHP não é a linguagem mais &#8220;cool&#8221; para se desenvolver para web no momento. Outras linguagens estão tomando o posto por serem mais compatíveis com o ambiente web que temos hoje. Um dos fatores que mais influencia nessa &#8220;tomada de território&#8221; é a agilidade no desenvolvimento que, aliado aos frameworks dessas linguagens, tornam o PHP quase obsoleto. Há como manter o PHP a pelo menos um nível competitivo com essas linguagens?</p>
<p>Apesar de todos os seus defeitos, o PHP ainda é a linguagem mais usada no mercado, embora venha perdendo espaço para novas tecnologias, como Ruby e Python. Aliadas a poderosos frameworks, essas &#8220;novas&#8221; linguagens (Ruby e Python são muito mais antigas que você imagina) tornam o desenvolvimento muito mais rápido. Só com o PHP, raça e vontade nunca será possível alcançar tais níveis de produtividade. A solução é seguir a mesma idéia: adotar um framework.</p>
<p>Não culpo o PHP por ser uma linguagem bem mais lenta em termos de desenvolvimento, a culpa é dos próprios desenvolvedores. Eles geralmente escolhem o lado mais difícil da coisa, recriando toda a estrutura para cada novo sistema. Poucos se preocupam em pesquisar por novas soluções que resolvam seus problemas de maneira mais rápida e automatizada. Ruby e Python, apesar de serem linguagens mais ágeis em minha opinião, só se tornaram &#8220;modinha&#8221; após o aparecimento dos frameworks. Por que os programadores PHP não escolhem o mesmo caminho?</p>
<p>Apesar de estar migrando, agora passo a acreditar que o que realmente importe talvez não seja somente a linguagem, mas sim as ferramentas que nos auxiliam com elas (leia-se frameworks), além dos próprios programadores. Pra que sofrer? Provavelmente alguém com mais tempo e conhecimento já tenha criado uma solução para determinado problema, bem melhor do que você mesmo poderia fazer, sem tempo e às vezes sem tamanho conhecimento.</p>
<p>Confesso que nunca havia usado um framework para PHP, embora já tenha sentido necessidade. Sempre praguejava a cada sistema iniciado, mas mesmo assim desenvolvia minhas próprias soluções para tornar o desenvolvimento menos doloroso. Isso durou até um mês atrás, quando me vi diante de um sistema bem complexo a ser desenvolvido na agência onde trabalho. Sem um framework, levaríamos meses para acabar. A única solução foi a adoção de um framework para PHP. Agora, o desenvolvimento do sistema flui rapidamente, e de maneira bem menos dolorosa, chata e sem graça.</p>
<p>A solução escolhida por nós foi o <a href="http://cakephp.org" rel="external" title="CakePHP - The Rapid Development PHP Framework">CakePHP</a>, talvez o framework mais conhecido para PHP. Sem dúvida alguma, é uma ferramenta de grande poder na hora de desenvolver, principalmente na versão 1.2 (ainda beta, com documentação escassa até o momento, e que talvez dê algumas dores de cabeça até que esteja completa). Para mim, o tempo de desenvolver em PHP puro se encerrou para sempre.</p>
<p>Talvez você não goste tanto do Cake quanto eu, e prefira outras opções. Opções não faltam, há o <a href="http://codeigniter.com" rel="external" title="Code Igniter">Code Igniter</a>, o <a href="http://framework.zend.com" rel="external" title="Zend Framework">Zend</a>, o <a href="http://www.symfony-project.org" rel="external" title="Symfony">Symfony</a>, entre dezenas de outros. Não importa qual seja o framework, desde que ele traga um ambiente mais rápido e agradável para desenvolvimento. Pra falar bem a verdade, uma das maiores razões para eu ter escolhido um framework em lugar de criar minha própria biblioteca de funções foi a implementação de orientação a objetos nesses frameworks, que pra mim dão muito mais sentido à programação.</p>
<p>Para programadores de outras linguagens, o mesmo princípio se aplica: não importa qual solução se use, desde que ela traga benefícios. Me direcionei para PHP pois é onde mais trabalho no momento e, por ironia, a linguagem que menos gosto. Os frameworks foram algo que me fizeram tomar um pouco mais de gosto pela linguagem. E se você não utiliza nada para ajudar no desenvolvimento, está na hora de rever seus conceitos&#8230;</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/codecast-5-frameworks/' rel='bookmark' title='Permanent Link: CodeCast #5 &#8211; Frameworks'>CodeCast #5 &#8211; Frameworks</a></li>
<li><a href='http://juliogreff.net/json-no-php/' rel='bookmark' title='Permanent Link: JSON no PHP'>JSON no PHP</a></li>
<li><a href='http://juliogreff.net/php-orientado-a-objeto/' rel='bookmark' title='Permanent Link: PHP Orientado a Objeto'>PHP Orientado a Objeto</a></li>
<li><a href='http://juliogreff.net/pense-mais-e-codifique-menos/' rel='bookmark' title='Permanent Link: Pense Mais e Codifique Menos'>Pense Mais e Codifique Menos</a></li>
<li><a href='http://juliogreff.net/por-que-projetos-morrem/' rel='bookmark' title='Permanent Link: Por que projetos &#8220;morrem&#8221;?'>Por que projetos &#8220;morrem&#8221;?</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/frameworks-por-um-php-menos-ruim/feed/</wfw:commentRss>
		<slash:comments>67</slash:comments>
		</item>
		<item>
		<title>JSON no PHP</title>
		<link>http://juliogreff.net/json-no-php/</link>
		<comments>http://juliogreff.net/json-no-php/#comments</comments>
		<pubDate>Fri, 29 Feb 2008 17:22:27 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Server-Side]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://juliogreff.blog.br/135/</guid>
		<description><![CDATA[Não seria ótimo se pudéssemos importar nossos dados em JSON no PHP e tratá-los como no JavaScript? Pois é, a partir do PHP 5.2.0 já temos uma extensão para JSON incluída, e é dela que vou falar nesse post. Com o advento do Ajax, JSON se tornou um formato para intercâmbio de dados bem mais [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/php-orientado-a-objeto/' rel='bookmark' title='Permanent Link: PHP Orientado a Objeto'>PHP Orientado a Objeto</a></li>
<li><a href='http://juliogreff.net/json-valido/' rel='bookmark' title='Permanent Link: JSON Válido'>JSON Válido</a></li>
<li><a href='http://juliogreff.net/cookies-em-json/' rel='bookmark' title='Permanent Link: Cookies em JSON'>Cookies em JSON</a></li>
<li><a href='http://juliogreff.net/javascript-object-notation/' rel='bookmark' title='Permanent Link: JavaScript Object Notation'>JavaScript Object Notation</a></li>
<li><a href='http://juliogreff.net/frameworks-por-um-php-menos-ruim/' rel='bookmark' title='Permanent Link: Frameworks: Por um PHP Menos Ruim'>Frameworks: Por um PHP Menos Ruim</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p class="left"><img src="http://juliogreff.net/wp-uploads/json-plus-php.png" alt="JSON com PHP" title="JSON com PHP" /></p>
<p>Não seria ótimo se pudéssemos importar nossos dados em JSON no PHP e tratá-los como no JavaScript? Pois é, a partir do PHP 5.2.0 já temos uma extensão para JSON incluída, e é dela que vou falar nesse post.</p>
<p>Com o advento do Ajax, JSON se tornou um formato para intercâmbio de dados bem mais eficiente e compacto que XML. E nada como tratá-lo como um objeto também no lado do servidor, assim como fazemos no JavaScript. As duas funções que tratam da conversão objeto-string e string-objeto no PHP são <code>json_encode</code> e <code>json_decode</code>, respectivamente.</p>
<h3>Objeto para String</h3>
<p>Quem já não amaldiçoou o PHP transformando manualmente um array em uma string JSON? É uma tarefa fácil, mas extremamente chata, principalmente se precisarmos usar recursão. A função <code>json_encode</code> faz todo o trabalho sujo pra você. Basta passar o array contendo os dados como parâmetro.</p>
<pre><code>$json = array("user" =&gt; "JulioGreff", "action" =&gt; "status", "text" =&gt; "online");
echo json_encode($json);</code></pre>
<p>Além de simples arrays como esse, podemos fazer algo mais complexo, com arrays dentro de arrays, em vários níveis.</p>
<pre><code>$json = array("group" =&gt; "Web", "action" =&gt; "list");
$json["list"] = array("JavaScript", "Ajax", "WebStandards");
$json["users"] = array(array("name" =&gt; "JulioGreff", "status" =&gt; "online"));
echo json_encode($json);</code></pre>
<p>No exemplo, além do sub-membro também coloquei um array comum, criado certinho. Adeus, <code>foreach</code>!</p>
<h3>String para Objeto</h3>
<p>Essa era uma parte complicada, transformar uma string recebida em um objeto, para podermos trabalhar. Com a função <code>json_decode</code> virou moleza.</p>
<pre><code>$json = '{"user_id": 5, "action": "post", "text": "JSON no PHP"}';
$json = json_decode($json);
echo $json-&gt;action; // "post"
echo $json-&gt;text; // "JSON no PHP"</code></pre>
<p>Veja que estamos usando um objeto, e não um array, por isso usamos o <code>-&gt;</code> (equivalente ao ponto em JavaScript). Para que a função retorne um array, passamos um segundo parâmetro (booleano) indicando se o objeto deve ser transformado em um array (<code>true</code>) ou não.</p>
<pre><code>$json = '{"user_id": 5, "action": "post", "text": "JSON no PHP"}';
$json = json_decode($json, true);
echo $json["action"]; // "post"
echo $json["text"]; // "JSON no PHP"</code></pre>
<h3>JSON Válido</h3>
<p><a href="http://juliogreff.net/json-valido/" title="JSON Válido">Lembre-se sempre das aspas no JSON!</a> Caso contrário, <code>json_decode</code> não irá funcionar. As aspas são necessárias em todas as strings, inclusive as chaves.</p>
<p>Também é necessário observar a codificação das strings para a função <code>json_encode</code>, pois a função só funciona com UTF-8.</p>
<p>Vou ficando por aqui. Até a próxima!</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/php-orientado-a-objeto/' rel='bookmark' title='Permanent Link: PHP Orientado a Objeto'>PHP Orientado a Objeto</a></li>
<li><a href='http://juliogreff.net/json-valido/' rel='bookmark' title='Permanent Link: JSON Válido'>JSON Válido</a></li>
<li><a href='http://juliogreff.net/cookies-em-json/' rel='bookmark' title='Permanent Link: Cookies em JSON'>Cookies em JSON</a></li>
<li><a href='http://juliogreff.net/javascript-object-notation/' rel='bookmark' title='Permanent Link: JavaScript Object Notation'>JavaScript Object Notation</a></li>
<li><a href='http://juliogreff.net/frameworks-por-um-php-menos-ruim/' rel='bookmark' title='Permanent Link: Frameworks: Por um PHP Menos Ruim'>Frameworks: Por um PHP Menos Ruim</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/json-no-php/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Proxy Curl</title>
		<link>http://juliogreff.net/proxy-curl/</link>
		<comments>http://juliogreff.net/proxy-curl/#comments</comments>
		<pubDate>Mon, 26 Mar 2007 21:52:31 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Diversos]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Server-Side]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/?p=84</guid>
		<description><![CDATA[Uma das maiores limitações do Ajax é a impossibilidade de acessar URLs de outros domínios. Isso, em primeira observação, nos tira um monte de idéias, e acaba com muitas idéias de aplicações puxando XML (ou texto, HTML ou qualquer outra coisa) de fora. Talvez muita gente já tenha feito um desse, e já vi outros [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/utilizando-o-metodo-post/' rel='bookmark' title='Permanent Link: Utilizando o Método POST em Ajax'>Utilizando o Método POST em Ajax</a></li>
<li><a href='http://juliogreff.net/fila-de-requisicoes-em-ajax/' rel='bookmark' title='Permanent Link: Fila de Requisições em Ajax'>Fila de Requisições em Ajax</a></li>
<li><a href='http://juliogreff.net/efeito-glide/' rel='bookmark' title='Permanent Link: Efeito Glide'>Efeito Glide</a></li>
<li><a href='http://juliogreff.net/jgquerystring/' rel='bookmark' title='Permanent Link: JGQueryString'>JGQueryString</a></li>
<li><a href='http://juliogreff.net/frameworks-por-um-php-menos-ruim/' rel='bookmark' title='Permanent Link: Frameworks: Por um PHP Menos Ruim'>Frameworks: Por um PHP Menos Ruim</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Uma das maiores limitações do Ajax é a impossibilidade de acessar URLs de outros domínios. Isso, em primeira observação, nos tira um monte de idéias, e acaba com muitas idéias de aplicações puxando XML (ou texto, HTML ou qualquer outra coisa) de fora.<br />
Talvez muita gente já tenha feito um desse, e já vi outros aí na Internet, mas pra quem nunca usou esse vai ser o pontapé inicial.<br />
Esse proxy consiste em puxar todo o conteúdo da URL pelo PHP, e passar pro Ajax. Não sou bom pra explicar esse tipo de coisa, então vamos ao código:</p>
<pre><code>&lt;?php
function open_url($url){
  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, $url);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  $content = curl_exec($curl);
  curl_close($curl);
  return $content;
}

$url = "http://" . $_GET['url'];
$proxyed = open_url($url);
echo $proxyed;
?&gt;
</code></pre>
<p>A única limitação: precisa da extensão CURL, do PHP, pra funcionar. Quem tiver o proxy para outras linguagens (ou um complemento pra esse meu), me passe por e-mail (escrito aí na sidebar), e eu coloco os créditos.<br />
E agora, um JS simples pra puxar qualquer coisa (<del datetime="2008-10-28T17:00:38+00:00">precisa do jsFrameWorX</del> err&#8230; finado jsFrameWorX&#8230;):</p>
<pre><code>var opt = {
  "enableCache": true, // pra não ocupar muitos caracteres na url
  "parameters": "url=juliogreff.net", // url a ser puxada
  "onSuccess": showExternalContent // função pra ser executada no final
}
var ajax = Ajax.request("proxy.php", opt); // proxy.php é o nosso proxy
function showExternalContent(xmlhttp) {
  $("ext").innerHTML = xmlhttp;
}
</code></pre>
<p>Post rápido, mas bem útil no apuro. Valeu.</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/utilizando-o-metodo-post/' rel='bookmark' title='Permanent Link: Utilizando o Método POST em Ajax'>Utilizando o Método POST em Ajax</a></li>
<li><a href='http://juliogreff.net/fila-de-requisicoes-em-ajax/' rel='bookmark' title='Permanent Link: Fila de Requisições em Ajax'>Fila de Requisições em Ajax</a></li>
<li><a href='http://juliogreff.net/efeito-glide/' rel='bookmark' title='Permanent Link: Efeito Glide'>Efeito Glide</a></li>
<li><a href='http://juliogreff.net/jgquerystring/' rel='bookmark' title='Permanent Link: JGQueryString'>JGQueryString</a></li>
<li><a href='http://juliogreff.net/frameworks-por-um-php-menos-ruim/' rel='bookmark' title='Permanent Link: Frameworks: Por um PHP Menos Ruim'>Frameworks: Por um PHP Menos Ruim</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/proxy-curl/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Utilizando o Método POST em Ajax</title>
		<link>http://juliogreff.net/utilizando-o-metodo-post/</link>
		<comments>http://juliogreff.net/utilizando-o-metodo-post/#comments</comments>
		<pubDate>Sat, 11 Nov 2006 15:07:32 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Destaques]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[codificação]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[post]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/?p=29</guid>
		<description><![CDATA[Como você já devia saber, o método GET só suporta o envio de 255 caracteres por vez. Com Ajax, isso costuma ser o suficiente, mas nem sempre. Em editores de texto, postagens em geral, cadastros, senhas (não é pelo tamanho, é que os dados não aparecem na URL)&#8230; Isso é conseguido por um método HTTP [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/ajax-requisicoes-head/' rel='bookmark' title='Permanent Link: Ajax: Requisições HEAD'>Ajax: Requisições HEAD</a></li>
<li><a href='http://juliogreff.net/fila-de-requisicoes-em-ajax/' rel='bookmark' title='Permanent Link: Fila de Requisições em Ajax'>Fila de Requisições em Ajax</a></li>
<li><a href='http://juliogreff.net/ajax-sem-o-x/' rel='bookmark' title='Permanent Link: Ajax sem o X'>Ajax sem o X</a></li>
<li><a href='http://juliogreff.net/ajax-com-a-mootools/' rel='bookmark' title='Permanent Link: Ajax com a Mootools'>Ajax com a Mootools</a></li>
<li><a href='http://juliogreff.net/estatisticas-para-navegacao-via-javascript/' rel='bookmark' title='Permanent Link: Estatísticas para Navegação via JavaScript'>Estatísticas para Navegação via JavaScript</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p>Como você já devia saber, o método GET só suporta o envio de 255 caracteres por vez. Com Ajax, isso costuma ser o suficiente, mas nem sempre. Em editores de texto, postagens em geral, cadastros, senhas (não é pelo tamanho, é que os dados não aparecem na URL)&#8230; Isso é conseguido por um método HTTP chamado &#8220;POST&#8221;. Possivelmente você já deve tê-lo usado, mas em Ajax&#8230;</p>
<p>Sim, é perfeitamente possível. Vamos lá então. Se você já tentou, provavelmente chegou perto de conseguir, algo como:</p>
<pre><code>var xmlhttp = setXmlHttp(); // Função Personalizada
xmlhttp.open("POST", "http://localhost/post.php", true);
xmlhttp.send("seus_dados=via_post");</code></pre>
<p>Essa é a base, mas não obteremos sucesso. Tudo o que fizemos, 100% mesmo, está correto. O problema é que falta mais alguma coisa. A primeira delas: o tipo de dados, não pode ser text/html ou text/xml, o padrão. O certo é o tipo de dados apropriado para envio de formulários: &#8220;application/x-www-form-urlencoded&#8221;. Vamos lá:</p>
<pre><code>var xmlhttp = setXmlHttp(); // Função Personalizada
xmlhttp.open("POST", "http://localhost/post.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");	// Setando Content-type
xmlhttp.send("seus_dados=via_post");</code></pre>
<p>Tudo certo, irá funcionar. Pelo que sei, o método POST aceita uma quantidade enorme de dados, enorme mesmo. Tudo o que você tentar enviar passará. Não sei exatamente o quanto. Mas, por padrão, o tamanho máximo permitido é 4096, para evitar erros. Isso faz com que seus dados cheguem truncados as vezes. Setamos então um novo header: &#8220;Content-length&#8221;.</p>
<pre><code>var xmlhttp = setXmlHttp(); // Função Personalizada
xmlhttp.open("POST", "http://localhost/post.php", true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");	// Setando Content-type
xmlhttp.setRequestHeader("Content-length", dados_a_enviar.length); // Comprimento do conteúdo=comprimento dos dados a enviar
xmlhttp.send(dados_a_enviar);</code></pre>
<p>E agora sim estamos com tudo pronto para funcionar! Não falta mais nada.</p>
<p>É, na verdade falta apenas uma coisinha: como enviar os dados? Como você já viu, enviamos os dados através de <code>xmlhttp.send()</code>. Mas como? Lembra-se das famosas query strings? Da mesma maneira, mas sem o &amp; inicial.</p>
<h3 id="recebendo-os-dados">Recebendo os Dados</h3>
<p>Além de enviar os dados, também devemos recebê-los corretamente. Ensinarei usando o PHP, mas poderia ser usada qualquer outra linguagem server-side.</p>
<p>Na verdade, para recebermos os dados, usamos o <code>$_POST['variavel']</code>. Nada mais simples. Mas há um probleminha: &#8220;A AÇÃO DO AJAX É FANTÁSTICA&#8221; chegaria truncada, mais ou menos assim: &#8220;AÃ‡ÃƒO DO AJAX Ã‰ FANTÃSTICA&#8221;. Você saberia dizer por quê?</p>
<p>Por padrão, os dados são enviados, recebidos, manipulados e outras ações desconhecidas de minha pessoa no formato UTF-8. Por causa dos acentos, a língua portuguesa chegaria totalmente truncada, como mostrei acima. Solução: transformar para ISO-8859-1. Como?</p>
<pre><code>&lt;?php
header("Content-type: text/html; charset=iso-8859-1");	// Header
$var = utf8_decode($_POST['var']);	//Transformando caracteres
?&gt;</code></pre>
<p>Também poderíamos adicionar mais opções, como retirar tags e barras&#8230; Não vem ao caso.</p>
<p>Como muito bem sugerido pelo <a href="http://juliogreff.net/utilizando-o-metodo-post/#comment-17299">Mateus Pádua</a>, podemos decodificar todo o <code>$_POST</code> de uma vez só, utilizando o mapeamento de array:</p>
<pre><code>$_POST = array_map(utf8_decode, $_POST);</code></pre>
<p>Outro porém: alguns bancos de dados preferem o UTF-8 para trabalhar. Nesse caso, precisamos guardar os dados nesse formato. Poooooortanto, precisamos fazer o inverso: transformar de ISO-8859-1 para UTF-8. Isso se faz através da função PHP <code>utf8_encode(data)</code>.</p>
<p>Espero que tenha servido bem aos seus propósitos. Qualquer dúvida, comentem!</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/ajax-requisicoes-head/' rel='bookmark' title='Permanent Link: Ajax: Requisições HEAD'>Ajax: Requisições HEAD</a></li>
<li><a href='http://juliogreff.net/fila-de-requisicoes-em-ajax/' rel='bookmark' title='Permanent Link: Fila de Requisições em Ajax'>Fila de Requisições em Ajax</a></li>
<li><a href='http://juliogreff.net/ajax-sem-o-x/' rel='bookmark' title='Permanent Link: Ajax sem o X'>Ajax sem o X</a></li>
<li><a href='http://juliogreff.net/ajax-com-a-mootools/' rel='bookmark' title='Permanent Link: Ajax com a Mootools'>Ajax com a Mootools</a></li>
<li><a href='http://juliogreff.net/estatisticas-para-navegacao-via-javascript/' rel='bookmark' title='Permanent Link: Estatísticas para Navegação via JavaScript'>Estatísticas para Navegação via JavaScript</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/utilizando-o-metodo-post/feed/</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>PHP Orientado a Objeto</title>
		<link>http://juliogreff.net/php-orientado-a-objeto/</link>
		<comments>http://juliogreff.net/php-orientado-a-objeto/#comments</comments>
		<pubDate>Wed, 27 Sep 2006 22:27:21 +0000</pubDate>
		<dc:creator>Julio Greff</dc:creator>
				<category><![CDATA[Server-Side]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[poo]]></category>

		<guid isPermaLink="false">http://www.juliogreff.blog.br/?p=11</guid>
		<description><![CDATA[Desde que escrevi esse artigo, aprendi muito sobre programação orientada a objetos. Sugiro que não use esse post como referência. Se desejar, &#8220;JavaScript Orientado a Objetos&#8221; é uma fonte mais correta e atualizada sobre POO. Eu sei que PHP é um tanto fora do contexto do blog, mas pra quem tiver a fim, fica aí [...]

<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/javascript-orientado-a-objetos-parte-1/' rel='bookmark' title='Permanent Link: JavaScript Orientado a Objetos &#8211; Parte 1'>JavaScript Orientado a Objetos &#8211; Parte 1</a></li>
<li><a href='http://juliogreff.net/javascript-orientado-a-objetos-parte-2/' rel='bookmark' title='Permanent Link: JavaScript Orientado a Objetos &#8211; Parte 2'>JavaScript Orientado a Objetos &#8211; Parte 2</a></li>
<li><a href='http://juliogreff.net/javascript-orientado-a-objetos-parte-3/' rel='bookmark' title='Permanent Link: JavaScript Orientado a Objetos &#8211; Parte 3'>JavaScript Orientado a Objetos &#8211; Parte 3</a></li>
<li><a href='http://juliogreff.net/json-no-php/' rel='bookmark' title='Permanent Link: JSON no PHP'>JSON no PHP</a></li>
<li><a href='http://juliogreff.net/frameworks-por-um-php-menos-ruim/' rel='bookmark' title='Permanent Link: Frameworks: Por um PHP Menos Ruim'>Frameworks: Por um PHP Menos Ruim</a></li>
</ul>]]></description>
			<content:encoded><![CDATA[<p class="post-hint">Desde que escrevi esse artigo, aprendi muito sobre programação orientada a objetos. Sugiro que não use esse post como referência. Se desejar, &#8220;<a href="http://juliogreff.net/javascript-orientado-a-objetos-parte-1/" title="JavaScript Orientado a Objetos - Parte 1">JavaScript Orientado a Objetos</a>&#8221; é uma fonte mais correta e atualizada sobre POO.</p>
<p>Eu sei que PHP é um tanto fora do contexto do blog, mas pra quem tiver a fim, fica aí a dica. E os conceitos servem também pra <a href="http://juliogreff.net/javascript-orientado-a-objetos-parte-1/" title="JavaScript Orientado a Objetos - Parte 1">JavaScript Orientado a Objeto</a>.</p>
<h3>Que diabos é Programação Orientada a Objeto?</h3>
<p>A Orientação a Objetos é uma maneira de programar que modela os processos de programação de uma maneira próxima a realidade, tratando cada componente de uma aplicação (script) como um objeto,  com suas características e funcionalidades.</p>
<p>Nada impede que se programe dessa maneira na versão 4 do PHP, mas a versão 5 reescreveu o tratamento de objetos, permitindo mais recursos, performance e vantagens no uso deste tipo de programação.</p>
<h3>Classes e Objetos</h3>
<p>Classe é a estrutura fundamental para a criação de um objeto. Uma classe é um conjunto organizado de variáveis (propriedades ou atributos) e métodos (funções), que será utilizada como um novo tipo e instanciará um objeto. Uma classe tem por objetivo criar um objeto, que é uma representação desta classe em uma variável.</p>
<p>Vamos utilizar a seguinte classe:</p>
<pre><code>&lt;?php
// Classe dog
class dog {
	public $nome;
	public $humor;
	function setNome( $nome )
	{
		$this-&gt;nome = $nome;
	}
	function setHumor( $humor )
	{
		$this-&gt;humor = $humor;
	}
	function falar()
	{
		echo $this-&gt;nome . ' está ' . $this-&gt;humor . ' e disse: AUAU!';
	}
}
?&gt;</code></pre>
<p>Aí criamos uma classe que instanciará um objeto, no nosso caso, um cachorro. Ela tem duas propriedades (<code>$nome</code> e <code>$humor</code>), e três métodos (<code>setNome($nome)</code>, <code>setHumor($humor)</code> e <code>falar()</code>). Agora, criando um objeto a partir dessa classe, vamos ver o que podemos fazer com ela:</p>
<pre><code>$cachorro = new dog; // Instanciamos o objeto "cachorro"
$cachorro-&gt;setNome( "Rex" ); // Setamos $cachorro-&gt;nome;
$cachorro-&gt;setHumor( "feliz" ); // Setamos $cachorro-&gt;humor;
$cachorro-&gt;falar(); // Chamamos o método $cachorro-&gt;falar();</code></pre>
<p>Como você deve ter visto, instanciamos um objeto utilizando o operador <code>new</code>. Para utilizarmos as propriedades e métodos da classe, devemos utilizar o operador <code>-&gt;</code>, como vimos acima.</p>
<h3>A variável $this</h3>
<p>Na definição da classe, podemos usar a variável <code>$this</code>, que é o próprio objeto. Quando uma classe é instanciada em um objeto, e utilizamos a variável <code>$this</code>, essa variável se refere ao objeto que estamos utilizando.</p>
<h3>Herança</h3>
<p>Herança é uma forma de reutilização de código em que novas classes são criadas a partir de classes já existentes, herdando atributos e métodos, e incluindo outros que sejam de necessidade. Vamos extender nossa classe <code>dog</code>, suportando também raças.</p>
<pre><code>class raca extends dog
{
	public $raca;
	function setRaca( $raca )
	{
		$this-&gt;raca = $raca;
	}
	function falar()
	{
		echo $this-&gt;nome . ' é da raça ' . $this-&gt;raca . ' e disse: AUAU!';
	}
}</code></pre>
<p>A classe <code>raca</code>, acima, herdou todas as propriedades e métodos da sua classe pai, <code>dog</code>. Além disso, foi adicionado um método <code>setRaca($raca)</code>, e o método <code>falar()</code> foi modificado. Usando sub-classes, é possível redefinir métodos e propriedades, e acrescentar outros, dependendo das necessidades.</p>
<p>Espero que tenha dado uma boa base. Logo entraremos em JavaScript também&#8230;</p>


<h3>Posts Relacionados</h3><ul><li><a href='http://juliogreff.net/javascript-orientado-a-objetos-parte-1/' rel='bookmark' title='Permanent Link: JavaScript Orientado a Objetos &#8211; Parte 1'>JavaScript Orientado a Objetos &#8211; Parte 1</a></li>
<li><a href='http://juliogreff.net/javascript-orientado-a-objetos-parte-2/' rel='bookmark' title='Permanent Link: JavaScript Orientado a Objetos &#8211; Parte 2'>JavaScript Orientado a Objetos &#8211; Parte 2</a></li>
<li><a href='http://juliogreff.net/javascript-orientado-a-objetos-parte-3/' rel='bookmark' title='Permanent Link: JavaScript Orientado a Objetos &#8211; Parte 3'>JavaScript Orientado a Objetos &#8211; Parte 3</a></li>
<li><a href='http://juliogreff.net/json-no-php/' rel='bookmark' title='Permanent Link: JSON no PHP'>JSON no PHP</a></li>
<li><a href='http://juliogreff.net/frameworks-por-um-php-menos-ruim/' rel='bookmark' title='Permanent Link: Frameworks: Por um PHP Menos Ruim'>Frameworks: Por um PHP Menos Ruim</a></li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://juliogreff.net/php-orientado-a-objeto/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
	</channel>
</rss>

