<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"> 
 
<channel> 

	<title>Thiago Bueno Tutoriais</title> 
	 
	<link>http://tutorial.thiagobueno.net</link> 
	<description>Site de Tutoriais de ActionScript 3.0, Adobe AIR e PHP</description><lastBuildDate>Mon, 21 Nov 2011 11:33:15 +0000</lastBuildDate><language>en</language>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ThiagoBuenoTutoriais" /><feedburner:info uri="thiagobuenotutoriais" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item> 
		<title>PHP: Variáveis - Parte 1</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/UMWl999nqqk/php-variaveis-parte-1</link> 
		<comments>http://tutorial.thiagobueno.net/php-variaveis-parte-1#ler</comments> 
		<pubDate>Mon, 21 Nov 2011 11:33:15 +0000</pubDate> 
		<dc:creator><![CDATA[<b>Autor:</b> <a href="www.washingtonpatricio.com" target="_blank">Washington Patr�cio</a> <b>Fonte:</b> <a href="http://www.washingtonpatricio.com/blog/2010/08/23/php-variaveis-parte-1/" target="_blank">http://www.washingtonpatricio.com/blog/2010/08/23/php-variaveis-parte-1/</a>]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/php">PHP</a>]]></category>
			<description><![CDATA[<img src="http://tutorial.thiagobueno.net/images/" /><h2>PHP: Variáveis - Parte 1</h2></div>Explicando e entendendo variáveis no PHP]]></description>
			<content:encoded><![CDATA[<p>
	Fala meu povo! Vou explicar de uma forma bem profunda, por essa razão dividi esse artigo em partes. Então vamos lá e mão na massa!</p>
<p>
	Bom. <strong>Variável</strong>, como o próprio nome diz, é algo que varia (dãnn). Assim temos identificadores capazes de representar conteúdos mutáveis. Elas são armazenadas em uma memória auxiliar e destruídas após a execução do programa.</p>
<p>
	No PHP é muuuito simples criar uma variável, basta atribuir um nome iniciado pelo caracter de <strong>cifrão ($)</strong>. Veja o exemplo abaixo:</p>
<pre class="brush: php">
<span style="display: none; "> </span>&lt;?php
$nome = 'Washington';
$sobrenome = 'Patrício';
echo $nome.' '.$sobrenome;
?&gt;<span style="display: none; "> </span></pre>
<p>
	Simples né? Mais temos algumas regrinhas básica na nomeclatura de uma variável. Veja:</p>
<p>
	1. Nunca inicie o nome de uma variável com números.<br />
	2. Nunca utilize espaços em brancos no nome de uma variável.<br />
	3. Nunca utilize caracteres especiais (! @ # $ % ¨ &amp; * / | [ ] { })<br />
	4. Evite criar variáveis com mais de 15 caracteres. Isso deixa mais claro e limpo teu código.<br />
	5. O nome de uma variável deve transmitir a idéia do que ela armazena. Pense bem nisso! (nada de $variavel3245)<br />
	6. Utilize preferencialmente palavras em minúsculo (separadas pelo underline _ )</p>
<pre class="brush: php">
<span style="display: none; "> </span>&lt;?php
$codigo_cliente;
$codigoCliente;
?&gt;
<span style="display: none; "> </span>
</pre>
<p>
	O PHP é<strong> Case Sensitive</strong>, ou seja, a variável<strong> $cliente</strong> é diferente da variável<strong> $Cliente</strong>. Tome cuidado ao declarar variáveis e nome de funções.</p>
<p>
	Em algumas situações, precisamos de um nome de variável que muda em determinada situação. Neste caso, não só o conteúdo de uma variável é mutável, mas também o seu nome. Para isso temos as <strong>Variáveis Variantes (variable variables)</strong>. O processo de criação é semelhante, basta dobra o numero de <strong>cifrão ($$)</strong>. O PHP irá referencia-la pelo conteúdo da primeira. Veja:</p>
<pre class="brush: php">
<span style="display: none; "> </span>&lt;?php
// Define o nome da variável
$variavel = 'nome';

// Cria uma variável identificada pelo conteúdo de $variavel
$variavel = 'Washington';

// Imprime a variável $nome na tela
echo $nome;
?&gt;
<span style="display: none; "> </span>
</pre>
<p>
	Bom galera por hoje é só isso! Nos próximos post vamos ver os tipos de variáveis existente e conhece-las bem a fundo! Então não perca!</p>
<p>
	No mais? testem o que foi aprendido hoje, tendo duvidas dá aquela 'tuítada' pra mim (<a href="http://www.twitter.com/waapatricio">@waapatricio</a>) ou posta aí nos comentários que eu respondo também!</p>
<p>
	Abrss!</p>
<p><a href="http://feedads.g.doubleclick.net/~a/uAheGcNy0ebxHErFJFQR29mrNXY/0/da"><img src="http://feedads.g.doubleclick.net/~a/uAheGcNy0ebxHErFJFQR29mrNXY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/uAheGcNy0ebxHErFJFQR29mrNXY/1/da"><img src="http://feedads.g.doubleclick.net/~a/uAheGcNy0ebxHErFJFQR29mrNXY/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/UMWl999nqqk" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/php-variaveis-parte-1</feedburner:origLink></item>
		
		<item> 
		<title>Retoque em Imagens - Maquiagem Digital</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/R2WNvXSJhb0/retoque-em-imagens-maquiagem-digital</link> 
		<comments>http://tutorial.thiagobueno.net/retoque-em-imagens-maquiagem-digital#ler</comments> 
		<pubDate>Fri, 18 Nov 2011 21:44:14 +0000</pubDate> 
		<dc:creator><![CDATA[<b>Autor:</b> <a href="http://www.twitter.com/@arielsantos95/" target="_blank">Ariel Santos</a> ]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/photoshop">Photoshop</a>]]></category>
			<description><![CDATA[<img src="http://tutorial.thiagobueno.net/images/AwT3dK2aDGthumb.png" /><h2>Retoque em Imagens - Maquiagem Digital</h2></div>neste post você aprenderá como fazer uma maquiagem digital perfeita elevando seus retoques a um nível ainda mais profissional]]></description>
			<content:encoded><![CDATA[<p>
	<span style="color: rgb(105, 105, 105); ">olá meu nome é </span><span style="color: rgb(0, 0, 0); "><strong>Ariel Santos</strong></span><span style="color: rgb(105, 105, 105); "> e agora vou lhe ensinar tecnicas um tanto quanto simples, mas que são muito uteis e estão sendo cada vez mais utilizadas, a </span><span style="color: rgb(0, 0, 0); "><strong>Maquiagem digital</strong></span></p>
<p>
	<span style="color: rgb(105, 105, 105); ">antes de ser iniciado o processo da Maquiagem digital é necessario que a imagem já esteja editada e retocada é necessario que espinhas sinais ou erros já estejam corrigidos, no caso abaixo usarem a maquiagem digital em mulheres que seram aplicadas simulações de blushes sombras, pó e etc...</span></p>
<p>
	<span style="color: rgb(105, 105, 105); ">vamos começar! , se a pele da pessoa já estiver corrigida podemos começar, vou usar a foto da atriz Emma Watson, como ela já tem uma pele belissima não foi necessario muitas correções</span></p>
<p>
	<span style="font-size: 14px;"><strong><span style="color: rgb(128, 128, 128);">antes de tudo clique </span><a target="_blank" href="http://1.bp.blogspot.com/_ibVFu0xjLIg/TJ8EOukp7XI/AAAAAAAAAGc/nU0F1ZZXcwA/s1600/emma-watson91.jpg">Aqui</a><span style="color: rgb(128, 128, 128);"> para fazer o download da imagem</span></strong></span></p>
<p>
	&nbsp;</p>
<p>
	<img alt="" src="http://tutorial.thiagobueno.net/public/arielsantos95/Wd3L5UCcVrNehRg7fWemma-watson-wallpaper-9-2.jpg" style="width: 600px; height: 480px; " /></p>
<p>
	<span style="color: rgb(128, 128, 128); ">(imagem pronta para Maquiagem digital)</span></p>
<p>
	&nbsp;</p>
<p>
	<span style="color: rgb(178, 34, 34); "><strong>vamos começar!</strong></span></p>
<p>
	primeiro vamos fazer um leve retoque na pele:</p>
<p>
	copie a camada da foto e reenomeie como <span style="color: rgb(0, 0, 0); "><strong>&quot;retoque pele&quot;</strong></span></p>
<p>
	essa será a nossa pele retocada, após copiar com a camada selecionada vá em <span style="color: rgb(0, 100, 0); "><span style="font-size: 14px; "><strong>filter /blur /surface blur</strong></span></span></p>
<p>
	na caixa de configurações que apareçe altere-a como abaixo:</p>
<p>
	<img alt="" src="http://tutorial.thiagobueno.net/public/arielsantos95/R5FPmNYaBzclm6n0fW2.jpg" style="width: 333px; height: 396px; " /></p>
<p>
	esta configuração funciona para o tipo de pele como o de Emma dependendo da pele da pessoa vá aumentando o <span style="color: rgb(0, 0, 0); "><strong>Radius</strong></span></p>
<p>
	depois de ter ajustado clique em ok para aplicar</p>
<p>
	agora vamos alterar a tonalização da pele e dar um leve contraste faça como abaixo</p>
<p>
	vá em <span style="color: rgb(0, 100, 0); "><span style="font-size: 14px; "><strong>image / adjustments / curves</strong></span></span> deixe o gráfico como no exemplo abaixo:</p>
<p>
	<img alt="" src="http://tutorial.thiagobueno.net/public/arielsantos95/hw8WSMWweyDuYbeK623.jpg" style="width: 489px; height: 486px; " /></p>
<p>
	<span style="color: rgb(128, 128, 128); ">(clique e arraste os pontos pretos do grafico para modifica-lo)</span></p>
<p>
	agora vamos ajustar a saturação</p>
<p>
	vá em <span style="font-size: 14px; "><span style="color: rgb(0, 100, 0); "><strong>image / adjustments / hue e saturation </strong></span><span style="color: rgb(105, 105, 105); "><span style="font-size: 12px; ">em hue deixe em&nbsp;</span></span><span style="color: rgb(0, 0, 0); "><strong>-6&nbsp;</strong></span></span></p>
<p>
	agora clique no icone add layer mask (mascara de camada)</p>
<p>
	<img alt="" src="http://tutorial.thiagobueno.net/public/arielsantos95/5JWMQbyU9IaKtOVjfs4.jpg" style="width: 300px; height: 298px; " /></p>
<p>
	agora perçeba que surgiu um novo icone de visualização ao lado do da imagem</p>
<p>
	<img alt="" src="http://tutorial.thiagobueno.net/public/arielsantos95/MjlD7Ug1NIdICxLE9b5.jpg" style="width: 264px; height: 196px; " /></p>
<p>
	este quadro branco é a sua mascara de camada ela funciona como um tipo de camada particular pra cada imagem</p>
<p>
	mantenha a mascara de camada selecionada depois selecione a <span style="color: rgb(0, 0, 0); "><strong>cor preta</strong></span> e usando a <span style="color: rgb(0, 0, 0); "><strong>paint bucket tool</strong></span> clique em cima da imagem&nbsp;</p>
<p>
	perceba que a imagem<span style="color: rgb(0, 0, 0); "><strong> retoque pele</strong></span> desapareçe deixando apenas a camada abaixo visivel, mas na verdade a camada não foi excluida esta apenas invisivel, agora selecione a <span style="color: rgb(105, 105, 105); ">cor branca e selecione a </span><span style="color: rgb(0, 0, 0); "><strong>ferramenta brush</strong></span><span style="color: rgb(105, 105, 105); "> escolha um pincel redondo suave ajuste o &nbsp;tamamanho para </span><span style="color: rgb(0, 0, 0); "><strong>131 px </strong></span><span style="color: rgb(105, 105, 105); ">ajuste a opacidade do pincel para</span><span style="color: rgb(0, 0, 0); "><strong> 70%</strong></span></p>
<p>
	agora vamos analizar o que fizemos agora, preste atenção!, inserimos uma mascara de camada depois pintamos a mascara com a cor preta, a cor preta serve para ocultar a mascara e a cor branca serve para mostra-la, então agora vamos pintar a pele retocada sobre o rosto dela&nbsp;</p>
<p>
	com a cor o tamanho e o pincel ajustados vamos pintar a pele retocada por cima da pele original</p>
<p>
	<img alt="" src="http://tutorial.thiagobueno.net/public/arielsantos95/TrKhn1ekeI5q8T8H866.jpg" style="width: 469px; height: 548px; " /></p>
<p>
	<span style="color: rgb(169, 169, 169); ">(iniciando processo de retoque pintando a pele da garota, perceba como a imagem retocada vai se revelando)</span></p>
<p>
	pinte todo o rosto da moça também pinte o pescoço, <strong>cuidado para não pintar por cima do cabelo ou fora da pele!</strong></p>
<p>
	após terminar sua imagem devera ficar assim:</p>
<p>
	<img alt="" src="http://tutorial.thiagobueno.net/public/arielsantos95/r81Mdkx5DYtvJwwFNA8.jpg" style="width: 600px; height: 480px; " /></p>
<p>
	<span style="color: rgb(105, 105, 105); "><strong>tenha cuidado para não exagerar no contraste lembre-se que a pele ainda deve se pareçer o mais realista possivel</strong></span></p>
<p>
	- terminamos a parte da pele agora vamos aos labios</p>
<p>
	copie a camada <span style="color: rgb(0, 0, 0); "><strong>&quot;Backgound&quot;,&nbsp;</strong></span><span style="color: rgb(105, 105, 105); ">arraste a camada de copia que acabou de ser gerada e coloque-a por cima de todas as layers como abaixo:</span></p>
<p>
	<img alt="" src="http://tutorial.thiagobueno.net/public/arielsantos95/OOmLYV0uNWWNKS0cEd9.jpg" style="width: 230px; height: 241px; " /></p>
<p>
	agora vamos utilizar o <span style="color: rgb(0, 0, 0); "><strong>curves</strong></span> novamente vamos acessa-lo em<span style="font-size: 14px; "><span style="color: rgb(0, 100, 0); "><strong> image/adjustments/curves</strong></span></span> configure o gráfico como abaixo:</p>
<p>
	<img alt="" src="http://tutorial.thiagobueno.net/public/arielsantos95/E78uh4ZwjF5PVLvkn710.jpg" style="width: 486px; height: 484px; " /></p>
<p>
	agora vamos dar a tonalização aos labios, vamos simular um batom Rosa vá em <span style="color: rgb(0, 100, 0); "><span style="font-size: 14px; "><strong>image/adjustments/Hue e Saturation</strong></span></span> deixe a janela como abaixo:</p>
<p>
	<img alt="" src="http://tutorial.thiagobueno.net/public/arielsantos95/6z2VJlxoTb1jaPxsbp11.jpg" style="width: 420px; height: 378px; " /></p>
<p>
	agora vamos aplicar a mesma tecnica como no retoque da pele vamos pintar o batom por cima da boca original, faça as mesmas etapas como no exemplo anterior</p>
<ol>
	<li>
		<span style="color: rgb(105, 105, 105); "><strong>Crie uma mascara de camada </strong></span></li>
	<li>
		<span style="color: rgb(105, 105, 105); "><strong>Pinte com a cor preta em cima da mascara</strong></span></li>
	<li>
		<span style="color: rgb(105, 105, 105); "><strong>Com um pincel branco suave pinte a imagem do batom por cima da original</strong></span></li>
</ol>
<p>
	na hora de pintar ajuste a opacidade para 49% para a cor não ficar muito forte, o resultado deve ficar como abaixo:</p>
<p>
	<img alt="" src="http://tutorial.thiagobueno.net/public/arielsantos95/65emjoQsJbSLV2Ki2I12.jpg" style="width: 300px; height: 269px; " /></p>
<p>
	depois escureça um pouco as sombracelhas use as configurações abaixo</p>
<p>
	escureça as sombrancelhas usando curves ajuste o gráfico como abaixo:</p>
<p>
	<img alt="" src="http://tutorial.thiagobueno.net/public/arielsantos95/qaegAlTLuZdlh66VCt13.jpg" style="width: 190px; height: 194px; " /></p>
<p>
	depois faça o processo da mascara de camada como nos labios para pintar por cima da imagem anterior.</p>
<p>
	você também pode clarear mais os olhos usando a ferramenta <span style="color: rgb(0, 0, 0); "><strong>Dodge tool&nbsp;</strong></span></p>
<p>
	<img alt="" src="http://tutorial.thiagobueno.net/public/arielsantos95/G1IHdoPTwxVTqDq5Itdodge-tool.gif" style="width: 189px; height: 77px; " /></p>
<p>
	vamos terminar a maquiagem criando uma simulação de pô cor de rosa e aplica-los nas bochechas</p>
<p>
	crie uma nova <span style="color: rgb(0, 0, 0); "><strong>layer</strong></span> selecione um pincel suave com a cor <span style="color: rgb(238, 130, 238); ">#da87a5 </span><span style="color: rgb(105, 105, 105); ">ajuste o tamanho para </span><span style="color: rgb(0, 0, 0); "><strong>215px</strong></span><span style="color: rgb(105, 105, 105); "> e aplique o pincel em cima da bochecha direita e esquerda agora mude o modo de mesclagem para </span><span style="color: rgb(0, 0, 0); "><strong>Overlay</strong></span><span style="color: rgb(105, 105, 105); "> e</span><span style="color: rgb(0, 0, 0); "><strong>&nbsp;</strong></span><span style="color: rgb(105, 105, 105); ">diminua a opacidade para </span><span style="color: rgb(0, 0, 0); "><strong>75%</strong></span></p>
<p>
	eis o resultado:</p>
<p>
	<img alt="" src="http://tutorial.thiagobueno.net/public/arielsantos95/5lhEl6VtsA03dTLrO914.jpg" style="width: 300px; height: 286px; " /></p>
<p>
	e por ultimo vamos dar mais cor aos cabelos dela usando <span style="color: rgb(0, 0, 0); "><strong>Curves, </strong></span><span style="color: rgb(105, 105, 105); ">copie a camada</span><span style="color: rgb(0, 0, 0); "><strong> &quot;Background&quot; </strong></span><span style="color: rgb(105, 105, 105); ">coloque-a por cima de todas as outras ou seja em 1° deixe o gráfico como abaixo:</span></p>
<p>
	<img alt="" src="http://tutorial.thiagobueno.net/public/arielsantos95/8WCqHdtVhAYeOCUcak15.jpg" style="width: 489px; height: 485px; " /></p>
<p>
	depois faça o processo da mascara de camada e reduza a opacidade do pincel para <span style="color: rgb(0, 0, 0); "><strong>67%</strong></span> antes de pintar.</p>
<p>
	&nbsp;</p>
<p>
	você também pode ajustar outras partes usando estas mesmas tecnicas</p>
<p>
	o resultado final:</p>
<p>
	<img alt="" src="http://tutorial.thiagobueno.net/public/arielsantos95/VnEwIEwi4RJnLm89G4final.jpg" style="width: 500px; height: 609px; " /></p>
<p>
	espero que tenham gostado qualquer duvida ou problema é só comentar ali embaixo ok! =)</p>
<p>
	<span style="color: rgb(169, 169, 169); ">para saber mais sobre novidades me siga pelo twitter:</span><span style="color: rgb(0, 128, 128); "><span style="font-size: 13px; "><strong>@arielsantos95</strong></span></span></p>
<p><a href="http://feedads.g.doubleclick.net/~a/g3rNUYlhkN_BlhjtikqunkVbVIU/0/da"><img src="http://feedads.g.doubleclick.net/~a/g3rNUYlhkN_BlhjtikqunkVbVIU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/g3rNUYlhkN_BlhjtikqunkVbVIU/1/da"><img src="http://feedads.g.doubleclick.net/~a/g3rNUYlhkN_BlhjtikqunkVbVIU/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/R2WNvXSJhb0" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/retoque-em-imagens-maquiagem-digital</feedburner:origLink></item>
		
		<item> 
		<title>Efeito Buraco Negro</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/PR3KDSNaZUk/efeito-buraco-negro</link> 
		<comments>http://tutorial.thiagobueno.net/efeito-buraco-negro#ler</comments> 
		<pubDate>Sat, 05 Nov 2011 17:42:59 +0000</pubDate> 
		<dc:creator><![CDATA[<b>Autor:</b> <a href="http://twitter.com/arielsantos95" target="_blank">ArielSantos</a> <b>Fonte:</b> <a href="http://www.youtube.com/watch?v=Q2FHlE0jpfE" target="_blank">http://www.youtube.com/watch?v=Q2FHlE0jpfE</a>]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/photoshop">Photoshop</a>]]></category>
			
			<content:encoded><![CDATA[<img src="http://i.ytimg.com/vi/Q2FHlE0jpfE/0.jpg" /><h2>Efeito Buraco Negro</h2></div>aprenda a criar um efeito de buraco negro em apenas 2 minutos usando as ferramentas mais básicas do PS
<p><a href="http://feedads.g.doubleclick.net/~a/j60ed0H-NOjYT0XZ9xEM0WC8X9w/0/da"><img src="http://feedads.g.doubleclick.net/~a/j60ed0H-NOjYT0XZ9xEM0WC8X9w/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/j60ed0H-NOjYT0XZ9xEM0WC8X9w/1/da"><img src="http://feedads.g.doubleclick.net/~a/j60ed0H-NOjYT0XZ9xEM0WC8X9w/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/PR3KDSNaZUk" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/efeito-buraco-negro</feedburner:origLink></item>
		
		<item> 
		<title>Envelhecimento de Pessoas</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/UW7C169LDlo/envelhecimento-de-pessoas</link> 
		<comments>http://tutorial.thiagobueno.net/envelhecimento-de-pessoas#ler</comments> 
		<pubDate>Sat, 05 Nov 2011 09:16:21 +0000</pubDate> 
		<dc:creator><![CDATA[<b>Autor:</b> <a href="http://a4embranco.blogspot.com/" target="_blank">Eduardo</a> ]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/photoshop">Photoshop</a>]]></category>
			
			<content:encoded><![CDATA[<img src="http://i.ytimg.com/vi/hVhQcMmLMgs/0.jpg" /><h2>Envelhecimento de Pessoas</h2></div>Aprenda a envelhecer pessoas no Photoshop com este video tutorial explicativo
<p><a href="http://feedads.g.doubleclick.net/~a/Ywe97uCv9N66RqVH_wkuzeGdUbE/0/da"><img src="http://feedads.g.doubleclick.net/~a/Ywe97uCv9N66RqVH_wkuzeGdUbE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Ywe97uCv9N66RqVH_wkuzeGdUbE/1/da"><img src="http://feedads.g.doubleclick.net/~a/Ywe97uCv9N66RqVH_wkuzeGdUbE/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/UW7C169LDlo" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/envelhecimento-de-pessoas</feedburner:origLink></item>
		
		<item> 
		<title>AIR para Android - Parte 2(vídeo inglês)</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/hLLbUwPJ9w8/air-para-android-parte-2video-ingles</link> 
		<comments>http://tutorial.thiagobueno.net/air-para-android-parte-2video-ingles#ler</comments> 
		<pubDate>Mon, 24 Oct 2011 16:21:42 +0000</pubDate> 
		<dc:creator><![CDATA[<b>Autor:</b> <a href="http://www.gotoandlearn.com/" target="_blank">Lee Brimelow</a> ]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/adobe-air">Adobe AIR</a>]]></category>
			<description><![CDATA[<img src="http://tutorial.thiagobueno.net/images/air-android.jpg" /><h2>AIR para Android - Parte 2(vídeo inglês)</h2></div>Neste tutorial eu mostro como acessar a câmera em seu dispositivo Android]]></description>
			<content:encoded><![CDATA[<script type="text/javascript"> 
	var flashvars = {};
	flashvars.file = "aa2.zip";
        flashvars.url = "gotoandlearn.com/files/";
	flashvars.version = "flashcs5";
	var params = {};
	params.allowfullscreen = "true";
	params.allowscriptaccess = "always";
	params.wmode = "transparent";
	params.menu = "false";
	var attributes = {};
	swfobject.embedSWF("download_ext.swf", "Download", "350", "80", "10", "expressInstall.swf", flashvars, params, attributes);
</script>
<div id="Download">
<a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a>
</div>
<br />

<script type="text/javascript"> 
	var flashvars = {};
	flashvars.src = "http://adobe.edgeboss.net/download/adobe/adobetv/gotoandlearn/aa2.mp4";
	flashvars.autoPlay = true;
	var params = {};
	params.allowfullscreen = "true";
	params.allowscriptaccess = "always";
params.wmode = "transparent";
	params.menu = "false";
	var attributes = {};
	swfobject.embedSWF("http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf", "player", "900", "675", "10", "expressInstall.swf", flashvars, params, attributes);
</script>
<div id="player">
<a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a><br />
<video src="http://adobe.edgeboss.net/download/adobe/adobetv/gotoandlearn/aa2.mp4" width="900" height="675" controls></video>
</div>
<p><a href="http://feedads.g.doubleclick.net/~a/PXqzAePs6344kUGHOl3mKxOPyeg/0/da"><img src="http://feedads.g.doubleclick.net/~a/PXqzAePs6344kUGHOl3mKxOPyeg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/PXqzAePs6344kUGHOl3mKxOPyeg/1/da"><img src="http://feedads.g.doubleclick.net/~a/PXqzAePs6344kUGHOl3mKxOPyeg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/hLLbUwPJ9w8" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/air-para-android-parte-2video-ingles</feedburner:origLink></item>
		
		<item> 
		<title>AIR para Android - Parte 1(vídeo inglês)</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/4KU7JQ4qvD4/air-para-android-parte-1video-ingles</link> 
		<comments>http://tutorial.thiagobueno.net/air-para-android-parte-1video-ingles#ler</comments> 
		<pubDate>Mon, 24 Oct 2011 16:21:40 +0000</pubDate> 
		<dc:creator><![CDATA[<b>Autor:</b> <a href="http://www.gotoandlearn.com/" target="_blank">Lee Brimelow</a> ]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/adobe-air">Adobe AIR</a>]]></category>
			<description><![CDATA[<img src="http://tutorial.thiagobueno.net/images/air-android.jpg" /><h2>AIR para Android - Parte 1(vídeo inglês)</h2></div>Neste primeiro tutorial eu mostrarei como configurar o seu ambiente de desenvolvimento com Flash CS5]]></description>
			<content:encoded><![CDATA[<script type="text/javascript"> 
	var flashvars = {};
	flashvars.src = "http://adobe.edgeboss.net/download/adobe/adobetv/gotoandlearn/aa1.mp4";
	flashvars.autoPlay = true;
	var params = {};
	params.allowfullscreen = "true";
	params.allowscriptaccess = "always";
params.wmode = "transparent";
	params.menu = "false";
	var attributes = {};
	swfobject.embedSWF("http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf", "player", "900", "550", "10", "expressInstall.swf", flashvars, params, attributes);
</script>
<div id="player">
<a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a><br />
<video src="http://adobe.edgeboss.net/download/adobe/adobetv/gotoandlearn/aa1.mp4" width="900" height="550" controls></video>
</div>
<p><a href="http://feedads.g.doubleclick.net/~a/_hXqoEhm-B3m3v9qtgx_HaAJzLw/0/da"><img src="http://feedads.g.doubleclick.net/~a/_hXqoEhm-B3m3v9qtgx_HaAJzLw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/_hXqoEhm-B3m3v9qtgx_HaAJzLw/1/da"><img src="http://feedads.g.doubleclick.net/~a/_hXqoEhm-B3m3v9qtgx_HaAJzLw/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/4KU7JQ4qvD4" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/air-para-android-parte-1video-ingles</feedburner:origLink></item>
		
		<item> 
		<title>Introdução a Programação Orientada à Objeto (POO) no PHP - Parte 2</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/TA7cT4XrqxA/introducao-a-programacao-orientada-a-objeto-poo-no-php-parte-2</link> 
		<comments>http://tutorial.thiagobueno.net/introducao-a-programacao-orientada-a-objeto-poo-no-php-parte-2#ler</comments> 
		<pubDate>Mon, 24 Oct 2011 16:04:19 +0000</pubDate> 
		<dc:creator><![CDATA[<b>Autor:</b> <a href="http://www.sandro.eti.br" target="_blank">Sandro J. S. Souza</a> ]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/php">PHP</a>]]></category>
			<description><![CDATA[<img src="http://tutorial.thiagobueno.net/images/" /><h2>Introdução a Programação Orientada à Objeto (POO) no PHP - Parte 2</h2></div>Por que programar em OO (Orientado à Objeto)? - Parte 2]]></description>
			<content:encoded><![CDATA[<p>
	Já conheço, agora, como utilizo?</p>
<p>
	Vamos continuar então Sr. Classe. Nosso próximo passo é desenvolver algo útil com essas benditas classes. Vou tentar mostrar no exemplo a seguir, uma comparação entre Programação OO e o Método &quot;Normal&quot;. Vamos para o desenvolvimento de um mini carrinho de compras, talvez uma Cesta.</p>
<pre class="brush: php">
<span style="display: none; "> </span>&lt;?php
class Cesta {
  var $Desconto;
  var $Preco = array();
  var $Quantidade = array();

  function Cesta($desconto) {
    $this -&gt; Desconto = $desconto;
    }

  function AdicionarItem($item, $preco, $quantidade) {
    if( isset($this -&gt; Preco[$item]) ) {
      $this -&gt; Quantidade[$item]  = $quantidade;
      } else {
        $this -&gt; Preco[$item] = $preco;
        $this -&gt; Quantidade[$item] = $quantidade;
        }
    }
}

$MinhaCesta = new Cesta(10);
?&gt;<span style="display: none; "> </span></pre>
<p>
	Calma, não desista, Objetos não é complicado, sei que deve ter parecido, mas veja com calma o exemplo:</p>
<p>
	. Do inicio até a linha 5, é o que vinhamos fazendo até agora, nada de novo;<br />
	. A função Cesta() está pedindo por uma váriavel $desconto, e essa função tem o mesmo nome que nossa classe, coencidencia? Não, de mandeira alguma, veja que ao chamar nossa classe na penultima linha, passamos um valor pela classe &quot;10&quot;. Ao criar uma nova classe, ela automaticamente executa uma função com o mesmo nome que a classe. Então ao mesmo tempo executamos essa função e declaramos a váriavel Desconto com o valor 10. Que no final de tudo, essa será a porcentagem de descontos que o usuário ganhará em cima das compras;<br />
	. Já a função AdicionarItem() tem mais explicações sobre ela mesmo do que OO. Primeiro verificamos se já existe o item na nossa matriz, se ele existir, somamos o valor ao que já existe, se não existir, definimos o Preco[$item] com o valor que foi passado e atribuimos a quantidade que foi passada.</p>
<p>
	Como isso iriamo funcionar? Para adicionar itens ao nosso carrinho, fariamos dessa forma (o script acima já está em nosso código):</p>
<pre class="brush: php">
<span style="display: none; "> </span>$MinhaCesta -&gt; AdicionarItem(1, 15.75, 10);<span style="display: none; "> </span></pre>
<p>
	Somente executamos a função AdicionarItem passando os valores 1 para o código do item, 15.75 como o valor do item e 10 como a quantidade.</p>
<p>
	Vamos virar o angulo de nossa atenção e ver como isso seria pela maneira tradicional. Provavelmente você teria que utilizar um banco de dados, onde cada item que seria adicionado no banco teria um código do usuário e sempre que fosse necessário puxar os dados, teriamos que fazer consultas ao banco de dados.</p>
<p>
	Mas qual a vantagem de jogar dentro de uma váriavel e na próxima página perdeu tudo? Então utilizaremos uma váriavel que não seja perdida na próxima página, podemos declarar uma váriavel de sessão como nosso objeto:</p>
<pre class="brush: php">
<span style="display: none; "> </span>$_SESSION['MinhaCesta'] = new Cesta(10);<span style="display: none; "> </span></pre>
<p>
	Resolvido o problema? Então temos um script que ficaria fácil de fazer uma manutenção, e sem utilizar recursos do servidor para conexões e consultados ao banco de dados. Vamos ver agora algumas funções que poderiamos anexar nesse nosso código:</p>
<pre class="brush: php">
<span style="display: none; "> </span>&lt;?php
class Cesta {
  var $Desconto;
  var $Preco = array();
  var $Quantidade = array();

  function Cesta($desconto) {
    $this -&gt; Desconto = $desconto;
    }

  function AdicionarItem($item, $preco, $quantidade) {
    if( isset($this -&gt; Preco[$item]) ) {
      $this -&gt; Quantidade[$item]  = $quantidade;
      } else {
        $this -&gt; Preco[$item] = $preco;
        $this -&gt; Quantidade[$item] = $quantidade;
        }
    }

  function RemoverItem($item, $quantidade) {
    if ( isset( $this -&gt; Quantidade[$item] ) ) {
      if ( $this -&gt; Quantidade[$item] &gt;= $quantidade ) {
        $this -&gt; Quantidade[$item] -= $quantidade;
        } else {
          $this -&gt; Quantidade[$item] = 0;
          }
        } else {
          return false;
          }
    }

}

session_start();

$_SESSION['MinhaCesta'] = new Cesta(10);
?&gt;<span style="display: none; "> </span></pre>
<p>
	Implementamos uma função para remover alguns itens que desejarmos. Algo como, adicionamos 50 mas tenho dinheiro para comprar somente 30, então preciso remover 20. Nossa primeiro comparação da função é ver se o item já está em nossa cesta, se não estiver, essa função retorna FALSE. A segunda comparação é ver se existe o total a ser removido no carrinho. Não teria lógica remover 70 itens se só tenho 50, e ficar com -20, isso provavelmente iria acarretar em problemas na contagem final. Se ele não tiver o total a ser removido ele define a váriavel Quantidade como 0.</p>
<p>
	Já temos nossas mãos na cesta, podemos adicionar e remover itens que desejamos, agora nos resta somente contratar nosso caixa:</p>
<pre class="brush: php">
<span style="display: none; "> </span>&lt;?php
class Cesta {
  var $Desconto;
  var $Preco = array();
  var $Quantidade = array();

  function Cesta($desconto) {
    $this -&gt; Desconto = $desconto;
    }

  function AdicionarItem($item, $preco, $quantidade) {
    if( isset($this -&gt; Preco[$item]) ) {
      $this -&gt; Quantidade[$item]  = $quantidade;
      } else {
        $this -&gt; Preco[$item] = $preco;
        $this -&gt; Quantidade[$item] = $quantidade;
        }
    }

  function RemoverItem($item, $quantidade) {
    if ( isset( $this -&gt; Quantidade[$item] ) ) {
      if ( $this -&gt; Quantidade[$item] &gt;= $quantidade ) {
        $this -&gt; Quantidade[$item] -= $quantidade;
        } else {
          $this -&gt; Quantidade[$item] = 0;
          }
        } else {
          return false;
          }
    }

  function TotalCompras() {
    $soma = 0;
    while ( list($cod, $valor) = each($this -&gt; Quantidade) ) {
      $soma  = $this -&gt; Quantidade[$cod] * $this -&gt; Preco[$cod];
      }
    $soma -= $soma * ($this -&gt; Desconto / 100);
    return $soma;
    }

}

session_start();

$_SESSION['MinhaCesta'] = new Cesta(10);
?&gt;<span style="display: none; "> </span></pre>
<p>
	Alguma dúvida sobre essa função? Uma simples para terminar. Somente percorremos toda a Matriz e calculamos a Quantidade de cada item * seu Proço unitário, aplicamos a porcentagem de descontos que o usuário tem e retornamos a Soma Total.</p>
<p>
	E como funcionaria todo o nosso script?</p>
<pre class="brush: php">
<span style="display: none; "> </span>&lt;?php
class Cesta {
  var $Desconto;
  var $Preco = array();
  var $Quantidade = array();

  function Cesta($desconto) {
    $this -&gt; Desconto = $desconto;
    }

  function AdicionarItem($item, $preco, $quantidade) {
    if( isset($this -&gt; Preco[$item]) ) {
      $this -&gt; Quantidade[$item]  = $quantidade;
      } else {
        $this -&gt; Preco[$item] = $preco;
        $this -&gt; Quantidade[$item] = $quantidade;
        }
    }

  function RemoverItem($item, $quantidade) {
    if ( isset( $this -&gt; Quantidade[$item] ) ) {
      if ( $this -&gt; Quantidade[$item] &gt;= $quantidade ) {
        $this -&gt; Quantidade[$item] -= $quantidade;
        } else {
          $this -&gt; Quantidade[$item] = 0;
          }
        } else {
          return false;
          }
    }

  function TotalCompras() {
    $soma = 0;
    while ( list($cod, $valor) = each($this -&gt; Quantidade) ) {
      $soma  = $this -&gt; Quantidade[$cod] * $this -&gt; Preco[$cod];
      }
    $soma -= $soma * ($this -&gt; Desconto / 100);
    return $soma;
    }

}

session_start();

$_SESSION['MinhaCesta'] = new Cesta(10);

$_SESSION['MinhaCesta'] -&gt; AdicionarItem(&quot;AF 1520&quot;, 17.90, 15);
$_SESSION['MinhaCesta'] -&gt; AdicionarItem(&quot;AE 1735&quot;, 21.00, 5);
$_SESSION['MinhaCesta'] -&gt; TotalCompras();
?&gt;<span style="display: none; "> </span></pre>
<p>
	Dessa forma, se conclui o exemplo de nossa Cesta de Compras. Agora vocês se perguntam:</p>
<p>
	- Pronto, fico bonito, mas só posso fazer isso com OOP?</p>
<p>
	Como comentei no inicio, tudo pode ser feito, qualquer script que você faria da maneira &quot;convencional&quot; poderia ser feito Orientado à Objeto. Para se ter uma idéia de alguns outros tipos que podem ser bastante úteis é nas Manutenções gerais de um site, upload de arquivos, murais de mensagens/recados, etc... Muitos scripts podem ser criados, dê asas a sua imaginação.</p>
<p>
	E para quem gosta de repassar seus scripts, o que ficaria mais fácil, passar esse trecho de um código:</p>
<pre class="brush: php">
<span style="display: none; "> </span>class Cesta {
  var $Desconto;
  var $Preco = array();
  var $Quantidade = array();

  function Cesta($desconto) {
    $this -&gt; Desconto = $desconto;
    }

  function AdicionarItem($item, $preco, $quantidade) {
    if( isset($this -&gt; Preco[$item]) ) {
      $this -&gt; Quantidade[$item]  = $quantidade;
      } else {
        $this -&gt; Preco[$item] = $preco;
        $this -&gt; Quantidade[$item] = $quantidade;
        }
    }

  function RemoverItem($item, $quantidade) {
    if ( isset( $this -&gt; Quantidade[$item] ) ) {
      if ( $this -&gt; Quantidade[$item] &gt;= $quantidade ) {
        $this -&gt; Quantidade[$item] -= $quantidade;
        } else {
          $this -&gt; Quantidade[$item] = 0;
          }
        } else {
          return false;
          }
    }

  function TotalCompras() {
    $soma = 0;
    while ( list($cod, $valor) = each($this -&gt; Quantidade) ) {
      $soma  = $this -&gt; Quantidade[$cod] * $this -&gt; Preco[$cod];
      }
    $soma -= $soma * ($this -&gt; Desconto / 100);
    return $soma;
    }

}<span style="display: none; "> </span></pre>
<p>
	Ou uns 10-15 arquivos?</p>
<p>
	<strong>Conclusão</strong></p>
<p>
	Sei que passei rápido demais o assunto sobre OO, mas acredite, não há muito o que se explicar. Isso é um método de programação, não uma função ou algo assim, que possa ter detalhes, exemplos ou mais coisas. Confesso que da forma que passei isso, restringue a pessoas que tenham já algum conhecimento em PHP, mas realmente, você primeiro precisa aprender PHP, para depois passar para OO, como espera criar funções e tudo mais se está apenas começando? Tudo ao seu tempo.</p>
<p>
	A intenção desse tutorial não é mudar o jeito de todos programar, pessoalmente, devo ter nem 30% dos meus trabalhos feitos OO. Como iniciei o tutorial, não há uma vantagem de um método sobre o outro, em alguns casos OO pode ser melhor e em outros a maneira convencional pode ser a melhor forma.</p>
<p>
	Com certeza, muitas dúvidas ficaram, expliquei um método de programação em 10 segundos... Espero somente desse tutorial é que, quem se interessar por OO, realmente tente desenvolver alguns mini projetos, e a qualquer dúvida, há várias pessoas aqui para lhe ajudar.</p>
<p>
	Mas acredite em uma coisa, saber quando, onde e porque utilizar OO é muito mais díficil que aprender a programar em OO.</p>
<p>
	Então, como diria alguém que mata 2 leões por dia com as unhas e dentes...</p>
<p>
	<em>&quot;Let the carnage begin&quot; - Stormbringer.</em></p>
<p><a href="http://feedads.g.doubleclick.net/~a/U7K0YmbWzxoXe8osSPdtvgIMxMg/0/da"><img src="http://feedads.g.doubleclick.net/~a/U7K0YmbWzxoXe8osSPdtvgIMxMg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/U7K0YmbWzxoXe8osSPdtvgIMxMg/1/da"><img src="http://feedads.g.doubleclick.net/~a/U7K0YmbWzxoXe8osSPdtvgIMxMg/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/TA7cT4XrqxA" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/introducao-a-programacao-orientada-a-objeto-poo-no-php-parte-2</feedburner:origLink></item>
		
		<item> 
		<title>Introdução a Programação Orientada à Objeto (POO) no PHP - Parte 1</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/lO2dRgvg-Fs/introducao-a-programacao-orientada-a-objeto-poo-no-php-parte-1</link> 
		<comments>http://tutorial.thiagobueno.net/introducao-a-programacao-orientada-a-objeto-poo-no-php-parte-1#ler</comments> 
		<pubDate>Mon, 24 Oct 2011 16:03:57 +0000</pubDate> 
		<dc:creator><![CDATA[<b>Autor:</b> <a href="http://www.sandro.eti.br" target="_blank">Sandro J. S. Souza</a> ]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/php">PHP</a>]]></category>
			<description><![CDATA[<img src="http://tutorial.thiagobueno.net/images/" /><h2>Introdução a Programação Orientada à Objeto (POO) no PHP - Parte 1</h2></div>Por que programar em OO (Orientado à Objeto)?]]></description>
			<content:encoded><![CDATA[<p>
	<strong>Por que programar OO (Orientado à Objeto)?</strong></p>
<p>
	Nem eu, nem qualquer outra pessoa no mundo pode chegar pra você e falar:</p>
<p>
	- Programe OO que é muito melhor.</p>
<p>
	Ou vice-versa. Não teve, não tem e provavelmente não terá nenhuma vantagem em relação a outra forma de programação. Tudo é uma questão de gosto e prática. Claro que, algumas vantagens uma tem em relação a outra, muitas pessoas comentam que programando OO você poderá publicar e buscar classes já prontas para fazer alguma função. Mas o mesmo aconteceria com a Programação &quot;Normal&quot;. Comparar OO ao Método normal, é semelhante a comparar as funções echo ou print.</p>
<p>
	Portanto, não vou estar aconselhando a usar ou não usar OO, é simplesmente o seu gosto. Mas, como li em uma frase no livro PHP 4 - A bíblia.</p>
<p>
	&quot;<strong>Não fique constrangido, caso um Programador OO diga que o script dele de 10 linhas é melhor que o seu de 5 linhas</strong>&quot;</p>
<p>
	Realmente, programando em OO você terá um código fonte maior. Mas por outro lado, melhor compreendido (para outros programadores de OO) do que um código ao modo &quot;normal&quot;.</p>
<p>
	O suporte a OO no PHP, como está no site oficial (php.net) é para usuários com experiências em outras linguaguens que são OO, como C#, e estão acostumados com ela. Por isso da introdução OO no PHP.</p>
<p>
	Vamos dar os parabéns para quem continuar, pois, está ciente que é uma maneira um pouco mais demorada, mas talvez possa ser mais organizada de programar. Não dúvido que muitos programadores ao lerem o texto acima, tenham para por ai. Nada de incomum, muitos irão ver OO e começar a programar nela, os demais, não veram vantagem nenhuma e deixarão de lado.</p>
<p>
	<span style="color: rgb(255, 0, 0); "><span style="font-size: 16px; "><strong>Introdução</strong></span></span></p>
<p>
	Enfim, começaremos. Para qualquer programação OO, você criará tudo baseado em Classes, e as variáveis que você costumava usar, passarão a ser Objetos. Vamos à um exemplo:</p>
<pre class="brush: php">
<span style="display: none; "> </span>&lt;?php
class MinhaClasse { // Declaração da Classe
    var $txt1; // Declaração das Variáveis
    var $txt2;
}

$MeuObjeto = new MinhaClasse();
?&gt;<span style="display: none; "> </span></pre>
<p>
	Um exemplo sem utilização, mas que poderá nos ajudar a entender como criar uma classe. Na linha 2 (class MinhaClasse {) é onde declaramos nossa Classe, cada vez que quiser criar um objeto a partir dela, criaremos chamando pelo nome definido &quot;MinhaClasse&quot;. Podemos criar quantas classes diferentes quiser, mas não pode ser em bloco:</p>
<pre class="brush: php">
<span style="display: none; "> </span>&lt;?php
class MinhaClasse {
?&gt;
&lt;?php
    var $txt1;
    var $txt2;
}
?&gt;<span style="display: none; "> </span></pre>
<p>
	O exemplo acima não irá funcionar. Voltando ao exemplo correto, as linhas 3 e 4 é onde declaramos nossas variáveis. Exato, para se trabalhar com classes, precisamos declarar as variáveis antes de usá-las. Mas não precisamos definir seu tipo, a não ser que queiramos uma Matriz:</p>
<pre class="brush: php">
<span style="display: none; "> </span>&lt;?php
class MinhaClasse {
    var $txt1 = array();
    var $txt2;
}

$MeuObjeto = new MinhaClasse();
?&gt;<span style="display: none; "> </span></pre>
<p>
	Acho que até aqui não teremos maiores problemas, vamos prosseguir.</p>
<p>
	Retornando valores das classes</p>
<p>
	Sei que a minha classe tem as váriaveis $txt1 e $txt2, mas como gravo e imprimo o que tem nelas? De uma maneira simples, mas não aconselhada, seria utilizar o operador &quot;-&gt;&quot;. Vamos supor que o script acima faça parte do nosso código:</p>
<pre class="brush: php">
<span style="display: none; "> </span>echo $MeuObjeto -&gt; txt1;<span style="display: none; "> </span></pre>
<p>
	Não, não esqueci do sinal $ antes de váriavel $txt1. Ao utilizar um objeto referenciamos as váriaveis dele somente com 1 sinal de $. Essa mesma forma poderia ser utilizada para definir valores à variavel:</p>
<pre class="brush: php">
<span style="display: none; "> </span>$MeuObjeto -&gt; txt1 = &quot;Olá Brasil!&quot;;<span style="display: none; "> </span></pre>
<p>
	Mas então, porque comentei antes que não era aconselhado utilizar dessa forma? Pelo simples fato de estarmos trabalhando com classes não somente para ter uma espécie de Matriz Multidimensional, mas sim para organizar nosso código. E uma maneira organizada de se fazer isso seria trabalhar com funções dentro das classes:</p>
<pre class="brush: php">
<span style="display: none; "> </span>&lt;?php
class MinhaClasse {
    var $txt1;
    var $txt2;

    function Retornar1() {
        echo $this -> txt1;
    }
}

$MeuObjeto = new MinhaClasse();
?&gt;<span style="display: none; "> </span></pre>
<p>
	Agora você se pergunta &quot;O que diabos faz aquele $this ali?&quot;. $this é somente uma referência à classe em que se encontra a função. Poderiamos sem problemas colocar no nome da classe para retornar o valor da váriavel, mas iria atrapalhar caso estivessemos trabalhando com classes hierarquicas, ter uma classe pai e filho. Mas isso não é hora de comentar ainda, mais pra frente veremos.</p>
<p>
	Voltando ao nosso código, veja que, a função está dentro de nossa classe, então para executar ela seria dessa forma:</p>
<p>
	$MeuObjeto -&gt; Retornar1();</p>
<p>
	Certo, mas já que não utilizo a forma &quot;antiga&quot; para ler a váriavel, como faço para armazenar um valor à ela?</p>
<p>
	O segredo está nas funções:</p>
<pre class="brush: php">
<span style="display: none; "> </span>&lt;?php
class MinhaClasse {
    var $txt1;
    var $txt2;

    function Retornar1() {
        echo $this -> txt1;
    }

    function Gravar1($valor) {
        $this -&gt; txt1 = $valor;
    }
}

$MeuObjeto = new MinhaClasse();
?&gt;<span style="display: none; "> </span></pre>
<p>
	Então ao executar a função $MeuObjeto -&gt; Gravar1(), temos que passar um valor que será o novo valor da váriavel $txt1. Quaisquer outros tipos de funções podem ser declaradas dentro da classe, mas tenha idéia que trabalhar com OO é justamente para ter no final, um código limpo e de fácil entendimento. Talvez alguém está se perguntando, porque venho colocando váriaveis com letras maiusculas. Isso é somente seu estilo de programação, vinha fazendo com _ a um bom tempo, mas mudei o jeito por vontade própria ao iniciar em OO, acho que dessa forma fica mais fácil identificar. Mas como disse, é somente o gosto, poderia sem problema algum criar a classe minha_classe e $meu_objeto. Só cuidado com a forma MinhaClasse, pois PHP faz distinção entre váriaveis maiusculas e minusculas.</p>
<p>
	Acho que podemos encerrar nossa introdução por aqui. Na próxima parte vamos à alguns exemplos mais práticos.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/MavwylpB2f_Dkc51L07hVALWX8o/0/da"><img src="http://feedads.g.doubleclick.net/~a/MavwylpB2f_Dkc51L07hVALWX8o/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/MavwylpB2f_Dkc51L07hVALWX8o/1/da"><img src="http://feedads.g.doubleclick.net/~a/MavwylpB2f_Dkc51L07hVALWX8o/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/lO2dRgvg-Fs" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/introducao-a-programacao-orientada-a-objeto-poo-no-php-parte-1</feedburner:origLink></item>
		
		<item> 
		<title>Iniciando com o Adobe Flex 3</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/5feLV3HgMK0/iniciando-com-o-adobe-flex-3</link> 
		<comments>http://tutorial.thiagobueno.net/iniciando-com-o-adobe-flex-3#ler</comments> 
		<pubDate>Wed, 05 Oct 2011 11:22:47 +0000</pubDate> 
		<dc:creator><![CDATA[<b>Autor:</b> <a href="http://alessandromoreira.blogspot.com" target="_blank">Alessandro Moreira</a> ]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/flex">Flex</a>]]></category>
			<description><![CDATA[<img src="http://tutorial.thiagobueno.net/images/" /><h2>Iniciando com o Adobe Flex 3</h2></div>Uma apresentação do Adobe Flex 3 e Action Script 3]]></description>
			<content:encoded><![CDATA[<p>
	<span style="color: rgb(178, 34, 34); "><strong><span style="font-size: 16px; ">Introdução</span></strong></span></p>
<p>
	No mundo de desenvolvimento de aplicações WEB principalmente com Java, temos problemas quanto ao desenvolvimento de interfaces, como incompatibilidade entre browsers, desenvolviemento lento, e outros detalhes que muitos vivenciam diariamente.<br />
	Existem soluções que prometem como o JavaServer Faces por exemplo, mas como dizem "A primeira experiência em Flex o programador Java nunca esquece." E eu também tive a mesma sensação e por isso decidi aprofundar-me e tentar passar minhas experiências e assim ajudar a outros que tiverem a mesmo sensação. Então, vamos conhecer a solução de desenvolvimento de interfaces Ricas, a Adobe Flex?.</p>
<p>
	Flex é um Framework "open source" altamente produtivo para construção de aplicações RIA (Rich Internet Application) podendo rodar em todos os principais browser bastando o uso do plugin Adobe Flash® Player e em desktop devido ao Adobe AIR?, o "cross-operating system runtime" que permite acessar dados localmente e recursos nativos do sistema operacional. Ambas alternativas são gratuítos.</p>
<p>
	O Flex fornece um moderno e padronizado modelo de programação composto por duas linguagens. O MXML, uma linguagem declarativa baseada em XML fascilita a geração da ferramenta RAD que inteligentemente está sendo desenvolvida como plugin para o Ambiente de Desenvolvimento Integrado Eclipse, o Flexbuilder Builder, o qual agiliza bastante a construção das Interfaces com o usuário. O comportamento, as funcionalidades, é programado em ActionScript? 3, agora uma poderosa linguagem de programação orientada a objetos. O Flex também fornece uma cada vez maior biblioteca de componentes e um interativo debugador.</p>
<p>
	<br />
	<span style="color: rgb(178, 34, 34); "><strong><span style="font-size: 16px; ">Por que usar Flex</span></strong></span></p>
<p>
	O Flex é executado a partir de uma máquina virtual, logo o programador apenas se preocupa em desenvolver a interface não em programar compatibilidade entre browsers e você ainda programa suas interfaces totalmente orientada a objetos, isso visa reuso de componentes, desenvolvimento de módulos e afins.</p>
<p>
	O estilo de programação e a diversidade do conteúdo que é possível criar com o flex, já que cada vez mais são disponibilizadas API's para interação com esta plataforma como o flicker, google maps, yahoo maps, youtube entre tantas outras. Sem falar da facilidade de uso das vantagens do Flash como animações frame-by-frame.</p>
<p>
	<br />
	<span style="color: rgb(178, 34, 34); "><strong><span style="font-size: 16px; ">Requisitos de Instalação</span></strong></span></p>
<p>
	1. Baixe a <strong>API do Flex</strong> e a descompacte em uma pasta a sua escolha, por exemplo: C:flexsdk.<br />
	<a href="http://www.adobe.com/products/flex/flexdownloads/">Flex 3.2 SDK</a></p>
<p>
	2. Baixe o <strong>Ambiente de Desenvolvimento Eclipse</strong> e o descompacte em uma pasta a sua escolha, por exemplo: C:aplicativos.<br />
	<a href="http://www.eclipse.org/downloads/">Eclipse IDE for Java EE Developers</a><br />
	<span style="color: rgb(128, 128, 128); "><span style="font-size: 11px; ">Ganymede Packages (based on Eclipse 3.4.1)</span></span></p>
<p>
	2.1 Baixe o <strong>Adobe® Flex® Builder 3 Professional</strong> Eclipse Plug-in. Como o próprio nome já diz, ele é um plugin para o eclipse, que adicionará todas as funcionalidades para o desenvolvimento de aplicações Adobe Flex 3 e Action Script 3.<br />
	<a href="http://www.adobe.com/cfusion/entitlement/index.cfm?e=flex3email">Flex Builder 3</a></p>
<p>
	2.2 <strong><span style="color: rgb(178, 34, 34); ">IMPORTANTE</span></strong>: O Flex Builder é trial com validade por 60 dias, porém a Adobe oferece aos estudantes o uso indefinido dessa ferramenta através do: "<a href="https://freeriatools.adobe.com/flex/">Adobe® Flex? Builder 3 Pro for Education</a>".</p>
<p>
	2.3 Verifique as seguintes configurações no Eclipse:<br />
	a. em: windowpreferences...FlexInstalled Flex SDKs, adicone a sdk do passo 1. Por padrão ela instala a sdk que vem com o Flex Builder.</p>
<p>
	3. Baixe e execute o <a href="http://www.adobe.com/support/flashplayer/downloads.html">Adobe Flash Player 10</a> - <strong>Debugger Versions</strong> (aka debug players or content debuggers). Ele é a VM (virtual machine) onde será interpretada as instruções ActionScript.</p>
<p>
	Muito bem, feito tudo isso, temos o ambiente pronto para iniciarmos o desenvolvimento de aplicações Flex.</p>
<p>
	<br />
	<span style="color: rgb(178, 34, 34); "><strong><span style="font-size: 16px; ">Por onde começar</span></strong></span></p>
<p>
	Acredito fortemente que a teoria lhe fornece inicialmente base de conhecimento e pro fim aprimoramento, mas é a prática que o faz aprender; exemplos e repetições doutrinam o raciocíneo. É a prática que ensina o fazer! Portanto sou seguidor da PRÁXIS.<br />
	Outra característica de minha personalidade é dar o devido mérito e reconhecimento a quem de direito. Em meus estudo o que vejo de blogueiros fazendo plágio. Nem vou comentar!</p>
<p>
	Para iniciar os estudos em Flex, recomento o trabalho realizado pelo português, Mário Santos, do blog <a href="http://msdevstudio.com/blog/">TWS</a>. O <a href="http://msdevstudio.com/blog/2008/01/05/adobe-flex-a-partir-do-zero/">Adobe Flex a partir do zero</a> lhe dá uma noção inicial muito boa para lhe situar no mundo do desenvolvimento Flex. Paralelamente, isso mesmo paralelo - no mundo OO não existe como estudar sequencialmente. O <a href="http://msdevstudio.com/blog/2008/06/12/tutorial-action-script-3-009">Tutorial Action Script 3</a> lhe fornece a fonte de pesquisa e/ou estudo para o entendimento da ActionScript 3, a linguagem de programação sobre a qual é construído o Adobe Flex e a qual utilizamos para declarar o comportamento, funcinalidades, ou seja a parte dinâmica ou programática das aplicações Flex. Ambos Tutoriais estão em constante desenvolvimento e ainda possui vários outros materiais. Vale a pena acompanhar!</p>
<p>
	Depois disso, o próprio site da Adobe tem uma documentação vasta sobre <a href="http://www.adobe.com/products/flex/">Flex</a>, tendo como ponto de partida: <a href="http://alessandromoreira.blogspot.com/http://www.adobe.com/devnet/flex/quickstart.html">Quick Starts</a>, <a href="http://learn.adobe.com/wiki/display/Flex/Getting Started">Getting Started Experience</a> e uma coleção de vídeos, <a href="http://www.adobe.com/devnet/flex/videotraining/">Flex in a Week</a>. Todos dentro da área voltada aos desenvolvimento, o <a href="http://www.adobe.com/devnet/flex/">devnet</a>.</p>
<p>
	O site da <a href="http://flex.org/">comunidade Flex</a> é também navegação obrigatório.</p>
<p>
	E finalizando temos um blogueiro que é referência, o pernanbucano, <a href="http://www.igorcosta.com/blog/">Igor Costa</a>.</p>
<p>
	Gente, tomando como partidade estes materiais, sites, blog, somando a esporáticas consultas ao Oráculo, Google. É possível chegar a todo o conhecimento necessario para o desenvolvimento de aplicações RIA em Flex e suas integrações com PHP, Java e outras.</p>
<p>
	<strong>Um abraço a todos e bons estudos</strong></p>
<p><a href="http://feedads.g.doubleclick.net/~a/Lnj7-87l5nwN0Ydzw0epcmeYEZQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/Lnj7-87l5nwN0Ydzw0epcmeYEZQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/Lnj7-87l5nwN0Ydzw0epcmeYEZQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/Lnj7-87l5nwN0Ydzw0epcmeYEZQ/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/5feLV3HgMK0" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/iniciando-com-o-adobe-flex-3</feedburner:origLink></item>
		
		<item> 
		<title>Reflexão ou Instrospecção em Adobe Flex</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/K_Oq4gMfhmQ/reflexao-ou-instrospeccao-em-adobe-flex</link> 
		<comments>http://tutorial.thiagobueno.net/reflexao-ou-instrospeccao-em-adobe-flex#ler</comments> 
		<pubDate>Wed, 05 Oct 2011 11:22:46 +0000</pubDate> 
		<dc:creator><![CDATA[<b>Autor:</b> <a href="http://alessandromoreira.blogspot.com" target="_blank">Alessandro Moreira</a> ]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/flex">Flex</a>]]></category>
			<description><![CDATA[<img src="http://tutorial.thiagobueno.net/images/" /><h2>Reflexão ou Instrospecção em Adobe Flex</h2></div>Reflexão ou introspecção é a capacidade de um programa de investigar fatos sobre si próprio]]></description>
			<content:encoded><![CDATA[<p>
	Reflexão ou introspecção é a capacidade de um programa de investigar fatos sobre si próprio. É uma técnica para determinar os elementos de uma classe em tempo de execução, tais como suas propriedades e métodos. Existem duas maneiras de fazer instrospecção em Actionscript.</p>
<p>
	A primeira maneira é usando o laço for..in. Esta técnica somente funciona para objetos dinâmicos, pois<br />
	ela enumera apenas as propriedades adicionadas dinamicamente. Ou seja, variáveis e métodos declarados não são enumerados em laços for..in. Veja exemplo:</p>
<pre class="brush: xml">
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!-- IntrospectionForIn.mxml --&gt;
&lt;mx:application creationcomplete=&quot;initApp()&quot; xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot;&gt;
&lt;mx:script&gt;&lt;![CDATA[
private var obj:Object = new Object();

private function initApp():void {
// propriedades adicionadas dinamicamente.
obj.a = &quot;Schotten Totten&quot;;
obj.b = &quot;Taj Majal&quot;;
obj.c = &quot;Durche die Wuste&quot;;
}

public function dumpObj():void {
for (var p:String in obj) {
ta1.text = p &quot;:&quot; obj[p] &quot;
&quot;;
}
}
]]&gt;&lt;/mx:script&gt;
&lt;mx:textarea height=&quot;200&quot; id=&quot;ta1&quot; width=&quot;400&quot;/&gt;
&lt;mx:button click=&quot;dumpObj()&quot; label=&quot;Dump Object&quot;/&gt;
&lt;/mx:application&gt;
</pre>
<p>
	<a href="http://livedocs.adobe.com/flex/3/html/help.html?content=usingas_8.html">Exemplo retirado da documentação da adobe Flex.</a></p>
<p>
	A segunda maneira é usando a API de Instrospecção. Ela é apropriada quando se quer listar todas as propriedades e métodos públicos de uma classe não-dinâmica. Aqui destaco o método flash.utils.describeType(), o qual retorna um XML com a descrição da classe (E4X API). Veja exemplo:</p>
<pre class="brush: xml">
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;!-- IntrospectionAPI.mxml --&gt;
&lt;mx:application creationcomplete=&quot;getDetails()&quot; xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot;&gt;
&lt;mx:script&gt;&lt;![CDATA[
import flash.utils.*;

public function getDetails():void {
// Fornece a descri&ccedil;&atilde;o do Bot&atilde;o em E4X XML.
var classInfo:XML = describeType(button1);

// Lista o nome da classe.
ta1.text = &quot;Class &quot; classInfo.@name.toString() &quot;
&quot;;

// Lista as vari&aacute;veis do objeto, seus valores e seus respectivos tipos.
for each (var v:XML in classInfo..variable) {
ta1.text = &quot;Variable &quot; v.@name &quot;=&quot; button1[v.@name] &quot; (&quot; v.@type &quot;)
&quot;;
}

// Lista os acessores como propriedades.
for each (var a:XML in classInfo..accessor) {
// N&atilde;o fornece o valor da propriedade se for &quot;write only&quot;.
if (a.@access == &#39;writeonly&#39;) {
ta1.text = &quot;Property &quot; a.@name &quot; (&quot; a.@type &quot;)
&quot;;
}
else {
ta1.text = &quot;Property &quot; a.@name &quot;=&quot; button1[a.@name] &quot; (&quot; a.@type &quot;)
&quot;;
}
}

// Lista os m&eacute;todos do objeto.
for each (var m:XML in classInfo..method) {
ta1.text = &quot;Method &quot; m.@name &quot;():&quot; m.@returnType &quot;
&quot;;
}
}
]]&gt;&lt;/mx:script&gt;

&lt;mx:button id=&quot;button1&quot; label=&quot;This Button Does Nothing&quot;/&gt;
&lt;mx:textarea height=&quot;200&quot; id=&quot;ta1&quot; width=&quot;400&quot;/&gt;
&lt;/mx:application&gt;
</pre>
<p>
	<a href="http://livedocs.adobe.com/flex/3/html/help.html?content=usingas_8.html">Exemplo retirado da documentação da adobe Flex.</a></p>
<p>
	<br />
	<span style="font-size: 13px; "><strong>Saiba mais nas referências abaixo.</strong></span></p>
<p>
	<strong>Referências</strong></p>
<ol>
	<li>
		<a href="http://livedocs.adobe.com/flex/3/html/help.html?content=usingas_8.html">http://livedocs.adobe.com/flex/3/html/help.html?content=usingas_8.html</a></li>
	<li>
		<a href="http://jsatriani.wordpress.com/2008/06/10/introspeccao-performance-java-x-action-script3/">http://jsatriani.wordpress.com/2008/06/10/introspeccao-performance-java-x-action-script3/</a></li>
	<li>
		<a href="http://www.as3dp.com/2007/05/05/runtime-checks-for-abstract-classes-and-methods-in-actionscript-30/ ">http://www.as3dp.com/2007/05/05/runtime-checks-for-abstract-classes-and-methods-in-actionscript-30/&nbsp;</a></li>
</ol>
<p><a href="http://feedads.g.doubleclick.net/~a/SRUngh5outHXb-BeF5EeH9OCRxA/0/da"><img src="http://feedads.g.doubleclick.net/~a/SRUngh5outHXb-BeF5EeH9OCRxA/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/SRUngh5outHXb-BeF5EeH9OCRxA/1/da"><img src="http://feedads.g.doubleclick.net/~a/SRUngh5outHXb-BeF5EeH9OCRxA/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/K_Oq4gMfhmQ" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/reflexao-ou-instrospeccao-em-adobe-flex</feedburner:origLink></item>
		
		<item> 
		<title>PHP Orientado a Objetos para quem está começando</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/liqLXpRoRxQ/php-orientado-a-objetos-para-quem-esta-comecando</link> 
		<comments>http://tutorial.thiagobueno.net/php-orientado-a-objetos-para-quem-esta-comecando#ler</comments> 
		<pubDate>Tue, 04 Oct 2011 16:11:16 +0000</pubDate> 
		<dc:creator><![CDATA[<b>Autor:</b> <a href="http://www.n3rds.com.br/author/admin/" target="_blank">Rafael Felix</a> ]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/php">PHP</a>]]></category>
			<description><![CDATA[<img src="http://tutorial.thiagobueno.net/images/" /><h2>PHP Orientado a Objetos para quem está começando</h2></div>Quando falamos em orientação a objetos (OO), em PHP, estamos falando basicamente de classes, métodos e propriedades]]></description>
			<content:encoded><![CDATA[<p>
	Há algum tempo utilizo PHP para desenvolver aplicações web based, porém nunca utilizando orientação a objeto (OO). Um tanto por não ter muito interesse nisso (pois isso é para mim um hobby), mas muito é porque os artigos sobre o tema são um tanto confusos para mim.</p>
<p>
	Por isso este ano decidi realmente aprender a orientação a objetos no PHP. Fruto desse aprendizado é este primeiro artigo sobre o tema e que tem por objetivo apenas apresentar de forma sucinta, clara, objetiva e de fácil compreensão pelos iniciantes do que é a orientação a objeto, seus principais conceitos e como fazer isso funcionar na prática.</p>
<p>
	Quando falamos em orientação a objetos (OO), em PHP, estamos falando basicamente de classes, métodos e propriedades.</p>
<p>
	Classe, no PHP, é um bloco de código escrito na forma abaixo:</p>
<pre class="brush: php">
<span style="display: none; "> </span>&lt;?php
class NomeDaClasse {
   // Algum código aqui
}
?&gt;<span style="display: none; "> </span>
</pre>
<p>
	Basicamente é o nome da classe, precedido da palavra reservada class e seguida de um par de colchetes {} o qual delimitará o código da classe.</p>
<p>
	Cada classe, no PHP, é um objeto, ou seja, uma coleção de métodos e propriedades.</p>
<p>
	<strong><span style="font-size: 14px; ">Mas o que são métodos e propriedades?</span></strong></p>
<p>
	Se você sabe o que é uma variável no PHP, sabe o que é propriedade, pois propriedades nada mais são do que as variáveis internas de uma classe, ou seja, são variáveis que você coloca dentro dos colchetes {} da classe.</p>
<p>
	Métodos são as funções internas das classes, ou seja, as funções que você coloca entre os colchetes {} da classe.</p>
<p>
	Abaixo um exemplo de classe, com métodos e variáveis.</p>
<pre class="brush: php">
<span style="display: none; "> </span>&lt;?php
class NomeDaClasse {
   // As propriedades e ...
   $propriedade;
   $outra_propriedade = 'algum texto';

   // ... os métodos
   function meuMetodo(){
      // Algum código aqui
   }

   function outroMetodo($parametro){
      // Algum código aqui
   }
}
?&gt;<span style="display: none; "> </span>
</pre>
<p>
	Muito bem, agora que sabemos estes três conceitos, vamos à prática, ou seja, vamos fazer uma classe, com seus métodos e variáveis, e ver como tudo funciona.</p>
<p>
	<span style="color: rgb(178, 34, 34); "><span style="font-size: 20px; "><strong>Criando uma classe</strong></span></span><br />
	Agora é o momento de colocarmos em prática os conceitos de classe, métodos e propriedades. Para isso vamos construir uma classe de interação com o MySQL.</p>
<p>
	Essa classe deverá fazer algumas coisas:</p>
<ul>
	<li>
		Conectar ao servidor MySQL e selecionar o banco de dados desejado;</li>
	<li>
		Configurar as variáveis (propriedades) dinamicamente;</li>
	<li>
		Executar consultas ao banco de dados, retornando o resultado;</li>
	<li>
		Retornar a string SQL usada na consulta.</li>
</ul>
<p>
	Abaixo está o código completo da classe (mas não se preocupe, abaixo do código vamos explicá-lo passo a passo):</p>
<pre class="brush: php">
<span style="display: none; "> </span>&lt;?php
/*
* Script para estudo sobre PHP e Orientação a Objetos
* @author Everton da Rosa (Everton3x)
* @copyright GPL
* @version 1.0 (21/04/2009)
*/

class TutoDB {
/*
   * Classe para interação com banco de dados
   * @author Everton da Rosa (Everton3x)
   * @version 1.0 (21/04/2009)
   */

   /*
   * Declaração das variáveis (propriedades) da classe
   */
   private $host; // Host (Servidor) que executa o banco de dados
   private $user; // Usuário que se conecta ao servidor de banco de dados
   private $pass; // Senha do usuário para conexão ao banco de dados
   private $db; // Nome do banco de dados a ser utilizado
   private $sql; // String da consulta SQL a ser executada

   function conectar(){
      /*
      * Função para conexão ao banco de dados
      * @author Everton da Rosa (Everton3x)
      * @return Object Retorna o objeto da conexão
      */
      $con = mysql_connect($this-&gt;host,$this-&gt;user,$this-&gt;pass)
      or die($this-&gt;erro(mysql_error()));
      return $con;
   }

   function selecionarDB(){
      /*
      * Função para seleção do banco de dados a ser usado
      * @author Everton da Rosa (Everton3x)
      * @return Boolean Retorna true (verdadeiro) ou false (falso)
      */

      $sel = mysql_select_db($this-&gt;db) or die($this-&gt;erro(mysql_error()));
      if($sel){
         return true;
      }else{
         return false;
      }
   }

   function query(){
      /*
      * Função para execução da consulta ao banco de dados
      * @author Everton da Rosa (Everton3x)
      * @return Object $qry Retorna o resultado da consulta como um objeto
      */
      $qry = mysql_query($this-&gt;sql) or die ($this-&gt;erro(mysql_error()));
      return $qry;
   }

   function set($prop,$value){
      /*
      * Função para atribuir valores às propriedades da classe
      * @author Everton da Rosa (Everton3x)
      * @param String $prop Nome da propriedade que terá seu valor atribuído
      * @param String, Array, Object Valor a ser atribuído
      * @return void Não dá nenhum retorno
      */
      $this-&gt;$prop = $value;
   }

   function getSQL(){
      /*
      * Função para retornar a string SQL
      * @author Everton da Rosa (Everton3x)
      * @return String String SQL
      */
      return $this-&gt;sql;
   }

   function erro($erro){
      /*
      * Função para exibir os error
      * @author Everton da Rosa (Everton3x)
      * @param String $erro Erro a ser exibido
      * @return void Não dá nenhum retorno
      */

      echo $erro;
   }
}

?&gt;<span style="display: none; "> </span>
</pre>
<p>
	Inicialmente, indicamos a classe com a palavra-chave class e damos um nome a ela (<strong>TutoDB</strong>).</p>
<pre class="brush: php">
<span style="display: none; "> </span>class TutoDB {<span style="display: none; "> </span>
</pre>
<p>
	Em seguida, definiremos as propriedades da classe, que nada mais são do que variáveis que podem ou não receber valores desde já. No nosso casso, apenas definiremos as variáveis. Caso quiséssemos atribuir-lhes valor, faríamos $host = 'localhost'; por exemplo.</p>
<pre class="brush: php">
<span style="display: none; "> </span>/*
   * Declaração das variáveis (propriedades) da classe
   */
   $host; // Host (Servidor) que executa o banco de dados
   $user; // Usuário que se conecta ao servidor de banco de dados
   $pass; // Senha do usuário para conexão ao banco de dados
   $db; // Nome do banco de dados a ser utilizado
   $sql; // String da consulta SQL a ser executada<span style="display: none; "> </span>
</pre>
<p>
	Aqueles que já trabalham com classes sentirão falta das palavras <em>public</em>, <em>private</em> ou <em>protected</em>. Como disse inicialmente, este é um artigo básico. A questão sobre visibilidade fica para um próximo.</p>
<p>
	As propriedades que foram definidas servem para armazenar o <em>host MySQL</em>, o usuário, a senha e o banco de dados, além da string de consulta SQL (<em>$host, $user, $pass, $db e $sql,</em> respectivamente).</p>
<p>
	Depois disso, iniciaremos com os códigos do nossos métodos.</p>
<p>
	Temos seis métodos na nossa classe:</p>
<ul>
	<li>
		<strong>conectar()</strong> serve para estabelecer uma conexão ao servidor MySQL (o host);</li>
	<li>
		<strong>selecionarDB()</strong> serve para selecionar o banco de dados desejado;</li>
	<li>
		<strong>query()</strong> executa a consulta ao banco de dados;</li>
	<li>
		<strong>set()</strong> é o método que atribui os valores ás nossas propriedades;</li>
	<li>
		<strong>getSQL()</strong> retorna a String SQL atribuída à propriedade $sql;</li>
	<li>
		<strong>erro()</strong> exibe mensagens de erro;</li>
</ul>
<p>
	<br />
	É importante salientar que não serão explicados o que cada método faz, pois isso fugiria do escopo do artigo. O importante é que se entenda que propriedades são objetos que são armazenados dentro da classe e que são utilizados geralmente pelos métodos e que métodos são partes da classe que fazem alguma coisa, geralmente baseados nas propriedades.</p>
<p>
	Na próxima parte do artigo veremos como utilizar esta classe e aprenderemos mais sobre a interação entre propriedades e métodos.</p>
<p>
	<span style="color: rgb(178, 34, 34); "><strong><span style="font-size: 20px; ">Utilizando a classe</span></strong></span><br />
	Agora que temos a nossa classe pronta, vamos ver o que ela faz e entender um pouco mais sobre métodos e propriedades e a interação entre eles.</p>
<p>
	Primeiramente devemos instanciar a classe, ou seja, criar um objeto na memória que irá representar a classe <strong>TutoDB</strong>.</p>
<p>
	Isso nós conseguimos da seguinte maneira:</p>
<pre class="brush: php">
<span style="display: none; "> </span>$obj = new TutoDB;<span style="display: none; "> </span>
</pre>
<p>
	Com isso estamos dizendo ao PHP para armazenar na variável <em>$obj</em> uma nova instância da classe <strong>TutoDB</strong>.</p>
<p>
	Depois vamos atribuir valores às nossas propriedades da seguinte forma:</p>
<pre class="brush: php">
<span style="display: none; "> </span>$obj-&gt;set('db','information_schema');
$obj-&gt;set('host','localhost');
$obj-&gt;set('user','root');
$obj-&gt;set('pass','');
$obj-&gt;set('sql','select * from COLLATIONS');<span style="display: none; "> </span>
</pre>
<p>
	Com isso dizemos ao PHP para utilizar o método <em>set()</em> do objeto armazenado em <em>$obj</em> (a classe <strong>TutoDB</strong>) para atribuir à propriedade passada pelo primeiro argumento o valor do segundo argumento.</p>
<p>
	Argumentos são os valores passados entre os parênteses das funções ou métodos. No caso da primeira linha, estamos dizendo para que seja colocado o valor information_schema na propriedade <em>$db</em>.</p>
<p>
	Poderíamos fazer isso de outra forma, sem utilizar um método, mas atribuindo diretamente um valor para a propriedade assim:</p>
<pre class="brush: php">
<span style="display: none; "> </span>$obj-&gt;db = 'information_schema'<span style="display: none; "> </span>
</pre>
<p>
	Por que então utilizamos um método para fazer isso?</p>
<p>
	Vamos supor que quiséssemos que a propriedade $user armazene apenas os valores <em>'root'</em> ou <em>'admin'</em>. Se deixássemos para atribuir valores em <em>$user</em> da forma <em>$obj-&gt;user</em>, qualquer valor poderia ser atribuído, mas se utilizamos um método para isso (no nosso caso, <em>set()</em>), podemos, dentro do método, colocar um código que verifique se o valor passado para ser armazenado na propriedade <em>$user</em> seja apenas <em>root</em> ou <em>admin</em>.</p>
<p>
	Vamos aproveitar e ver o método <em>set()</em>:</p>
<pre class="brush: php">
<span style="display: none; "> </span>   function set($prop,$value){
      /*
      * Função para atribuir valores às propriedades da classe
      * @author Everton da Rosa (Everton3x)
      * @param String $prop Nome da propriedade que terá seu valor atribuído
      * @param String, Array, Object Valor a ser atribuído
      * @return void Não dá nenhum retorno
      */
      $this-&gt;$prop = $value;
   }<span style="display: none; "> </span>
</pre>
<p>
	<br />
	Veja que a atribuição de valor à propriedade é feita no seguinte esquema:</p>
<pre class="brush: php">
<span style="display: none; "> </span>$this-&gt;$prop = $value;<span style="display: none; "> </span>
</pre>
<p>
	Onde:<br />
	<em>$this</em> referencia a própria classe.</p>
<p>
	Precisamos fazer referência à classe pois se colocássemos apenas <em>$prop = $value</em>, estaríamos dizendo ao PHP para atribuir <em>$value</em> a uma variável chamada <em>$prop</em>, que poderia estar até mesmo fora da nossa classe.</p>
<p>
	Note também que o que o método faz é apenas <em>$this-&gt;nomedapropriedade = valor</em> a ser atribuído.</p>
<p>
	Seguindo?</p>
<p>
	Vamos conectar com o servidor MySQL com o método <em>conectar()</em> da seguinte forma:</p>
<pre class="brush: php">
<span style="display: none; "> </span>$obj-&gt;conectar(); // Realiza a conexão

   function conectar(){
      /*
      * Função para conexão ao banco de dados
      * @author Everton da Rosa (Everton3x)
      * @return Object Retorna o objeto da conexão
      */
      $con = mysql_connect($this-&gt;host,$this-&gt;user,$this-&gt;pass)
      or die($this-&gt;erro(mysql_error()));
      return $con;
   }<span style="display: none; "> </span>
</pre>
<p>
	Vejam que o método pega os valores das propriedades <em>$host, $user</em> e <em>$pass</em> para conectar ao servidor MySQL (<em>mysql_connect($this-&gt;host,$this-&gt;user,$this-&gt;pass)</em>), ou se der erro, para o script e chama o método <em>erro()</em> passando-lhe o parâmetro <em>mysql_error() ( or die($this-&gt;erro(mysql_error())))</em>.</p>
<p>
	Depois disso selecionamos o banco de dados desejado (que foi informado na propriedade <em>$db</em>):</p>
<pre class="brush: php">
<span style="display: none; "> </span>$obj-&gt;selecionarDB(); // Seleciona o banco de dados<span style="display: none; "> </span>
</pre>
<p>
	Em seguida realizamos a consulta ao banco de dados:</p>
<pre class="brush: php">
<span style="display: none; "> </span>$rs = $obj-&gt;query();<span style="display: none; "> </span>
</pre>
<p>
	Todos os três métodos seguem um mesmo padrão: usam os valores armazenados nas propriedades para realizar alguma coisa.</p>
<p>
	Ainda falta pegarmos a string SQL com o seguinte código:</p>
<pre class="brush: php">
<span style="display: none; "> </span>$sql = $obj-&gt;getSQL(); // Pega o valor da propriedade $sql<span style="display: none; "> </span>
</pre>
<p>
	Observe que o método <em>getSQL()</em> apenas retorna o valor armazenado na propriedade <em>$sql</em>. Poderíamos fazer isso também da seguinte forma:</p>
<pre class="brush: php">
<span style="display: none; "> </span>$obj-&gt;sql;<span style="display: none; "> </span>
</pre>
<p>
	Por fim, vamos escrever algo para mostrar que nossa classe funciona:</p>
<pre class="brush: php">
<span style="display: none; "> </span>echo 'O número de linhas encontrado para a consulta '.$sql.' é de '.mysql_num_rows($rs); // Exibe o número de linhas do resultado
</pre>
<p>
	Se tudo funcionar, no navegador deve aparecer uma mensagem do tipo: O número de linhas encontrado para a consulta <em>select * from COLLATIONS</em> é de 127.</p>
<p>
	Agora temos o código completo para usarmos nossa classe:</p>
<pre class="brush: php">
<span style="display: none; "> </span>/*
* Testando a classe
*/

$obj = new TutoDB; // Instanciando a classe

// Atribuindo valores às propriedades da classe
$obj-&gt;set('db','information_schema');
$obj-&gt;set('host','localhost');
$obj-&gt;set('user','root');
$obj-&gt;set('pass','');
$obj-&gt;set('sql','select * from COLLATIONS');

$obj-&gt;conectar(); // Realiza a conexão
$obj-&gt;selecionarDB(); // Seleciona o banco de dados
$rs = $obj-&gt;query();

$sql = $obj-&gt;getSQL(); // Pega o valor da propriedade $sql
echo 'O número de linhas encontrado para a consulta '.$sql.' é de '.mysql_num_rows($rs); // Exibe o número de linhas do resultado<span style="display: none; "> </span>
</pre>
<p>
	Agora que sabemos o básico cobre classes, propriedades e métodos, vamos na conclusão abordar os principais conceitos do artigo.</p>
<p>
	<span style="color: rgb(178, 34, 34); "><strong><span style="font-size: 20px; ">Resumo final</span></strong></span><br />
	Para finalizar o artigo, faremos um apanhados dos principais conceitos nele abordados:</p>
<p>
	Classes são blocos de código, geralmente tratando de operações relacionadas (banco de dados, arquivos etc) e que devem ser instanciadas (colocadas na memória) para serem usadas. Isso se faz da seguinte forma:</p>
<pre class="brush: php">
<span style="display: none; "> </span>$variavel = new NomeDaClasse;<span style="display: none; "> </span>
</pre>
<p>
	Propriedades são variáveis internas da classe que servem para armazenar dados que serão utilizados por métodos.</p>
<p>
	Para atribuir diretamente dados às propriedades fazemos:</p>
<pre class="brush: php">
<span style="display: none; "> </span>$variavel-&gt;nome_da_propriedade = dados a serem atribuídos;<span style="display: none; "> </span>
</pre>
<p>
	Para &quot;ver&quot; o que está armazenado na propriedade, fazemos o seguinte:</p>
<pre class="brush: php">
<span style="display: none; "> </span>$variavel-&gt;nome_da_propriedade;<span style="display: none; "> </span>
</pre>
<p>
	Métodos são funções internas das classes que realizam alguma coisa, geralmente tomando por base os dados armazenados nas propriedades.</p>
<p>
	Para executar um método, fazemos o seguinte:</p>
<pre class="brush: php">
<span style="display: none; "> </span>$variavel-&gt;metodo();<span style="display: none; "> </span>
</pre>
<p>
	Dentro dos métodos, as propriedades e outros métodos internos da classe são referenciados utilizando $this:</p>
<pre class="brush: php">
<span style="display: none; "> </span>$this-&gt;nome_da_propriedade;
$this-&gt;nomeDoMetodo();<span style="display: none; "> </span>
</pre>
<p>
	Espero que o leitor, principalmente o iniciante, tenha aprendido um pouco mais sobre classes, item básico para a compreensão do que é programação orientada a objetos no PHP.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/wt81fIp7FSSTTIRi_PF8tQXVLfM/0/da"><img src="http://feedads.g.doubleclick.net/~a/wt81fIp7FSSTTIRi_PF8tQXVLfM/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/wt81fIp7FSSTTIRi_PF8tQXVLfM/1/da"><img src="http://feedads.g.doubleclick.net/~a/wt81fIp7FSSTTIRi_PF8tQXVLfM/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/liqLXpRoRxQ" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/php-orientado-a-objetos-para-quem-esta-comecando</feedburner:origLink></item>
		
		<item> 
		<title>Curso de PHP para iniciantes - Aula 5</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/unjYZ3_2hGQ/curso-de-php-para-iniciantes-aula-5</link> 
		<comments>http://tutorial.thiagobueno.net/curso-de-php-para-iniciantes-aula-5#ler</comments> 
		<pubDate>Tue, 04 Oct 2011 13:05:33 +0000</pubDate> 
		<dc:creator><![CDATA[<b>Autor:</b> <a href="http://rbtech.info/" target="_blank">Ricardo Bernardi</a> ]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/php">PHP</a>]]></category>
			
			<content:encoded><![CDATA[<img src="http://tutorial.thiagobueno.net/images/6amGaula05.jpg" /><h2>Curso de PHP para iniciantes - Aula 5</h2></div>Curso de PHP para iniciantes
<p><a href="http://feedads.g.doubleclick.net/~a/tke_ee_2HRzfSm9j9zPtIvaUc0Q/0/da"><img src="http://feedads.g.doubleclick.net/~a/tke_ee_2HRzfSm9j9zPtIvaUc0Q/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/tke_ee_2HRzfSm9j9zPtIvaUc0Q/1/da"><img src="http://feedads.g.doubleclick.net/~a/tke_ee_2HRzfSm9j9zPtIvaUc0Q/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/unjYZ3_2hGQ" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/curso-de-php-para-iniciantes-aula-5</feedburner:origLink></item>
		
		<item> 
		<title>Curso de PHP para iniciantes - Aula 4</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/K97BhJXlyBM/curso-de-php-para-iniciantes-aula-4</link> 
		<comments>http://tutorial.thiagobueno.net/curso-de-php-para-iniciantes-aula-4#ler</comments> 
		<pubDate>Tue, 04 Oct 2011 13:05:34 +0000</pubDate> 
		<dc:creator><![CDATA[<b>Autor:</b> <a href="http://rbtech.info/" target="_blank">Ricardo Bernardi</a> ]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/php">PHP</a>]]></category>
			
			<content:encoded><![CDATA[<img src="http://tutorial.thiagobueno.net/images/gO99aula04.jpg" /><h2>Curso de PHP para iniciantes - Aula 4</h2></div>Curso de PHP para iniciantes
<p><a href="http://feedads.g.doubleclick.net/~a/KNiVRX8EVGGndcq8ePtlGfyNgjI/0/da"><img src="http://feedads.g.doubleclick.net/~a/KNiVRX8EVGGndcq8ePtlGfyNgjI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/KNiVRX8EVGGndcq8ePtlGfyNgjI/1/da"><img src="http://feedads.g.doubleclick.net/~a/KNiVRX8EVGGndcq8ePtlGfyNgjI/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/K97BhJXlyBM" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/curso-de-php-para-iniciantes-aula-4</feedburner:origLink></item>
		
		<item> 
		<title>Curso de PHP para iniciantes - Aula 3</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/W-3pZtHwWYU/curso-de-php-para-iniciantes-aula-3</link> 
		<comments>http://tutorial.thiagobueno.net/curso-de-php-para-iniciantes-aula-3#ler</comments> 
		<pubDate>Tue, 04 Oct 2011 13:05:35 +0000</pubDate> 
		<dc:creator><![CDATA[<b>Autor:</b> <a href="http://rbtech.info/" target="_blank">Ricardo Bernardi</a> ]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/php">PHP</a>]]></category>
			
			<content:encoded><![CDATA[<img src="http://tutorial.thiagobueno.net/images/zEFUaula03.jpg" /><h2>Curso de PHP para iniciantes - Aula 3</h2></div>Curso de PHP para iniciantes
<p><a href="http://feedads.g.doubleclick.net/~a/_V4bktb6oO93UEVVXzOtA0x_Nx0/0/da"><img src="http://feedads.g.doubleclick.net/~a/_V4bktb6oO93UEVVXzOtA0x_Nx0/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/_V4bktb6oO93UEVVXzOtA0x_Nx0/1/da"><img src="http://feedads.g.doubleclick.net/~a/_V4bktb6oO93UEVVXzOtA0x_Nx0/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/W-3pZtHwWYU" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/curso-de-php-para-iniciantes-aula-3</feedburner:origLink></item>
		
		<item> 
		<title>Curso de PHP para iniciantes - Aula 2</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/TSace11RIpo/curso-de-php-para-iniciantes-aula-2</link> 
		<comments>http://tutorial.thiagobueno.net/curso-de-php-para-iniciantes-aula-2#ler</comments> 
		<pubDate>Tue, 04 Oct 2011 13:05:36 +0000</pubDate> 
		<dc:creator><![CDATA[<b>Autor:</b> <a href="http://rbtech.info/" target="_blank">Ricardo Bernardi</a> ]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/php">PHP</a>]]></category>
			
			<content:encoded><![CDATA[<img src="http://tutorial.thiagobueno.net/images/9fWQaula02.jpg" /><h2>Curso de PHP para iniciantes - Aula 2</h2></div>Curso de PHP para iniciantes
<p><a href="http://feedads.g.doubleclick.net/~a/6xJuUA9bNMMmDA-dx2r5kpCklxE/0/da"><img src="http://feedads.g.doubleclick.net/~a/6xJuUA9bNMMmDA-dx2r5kpCklxE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/6xJuUA9bNMMmDA-dx2r5kpCklxE/1/da"><img src="http://feedads.g.doubleclick.net/~a/6xJuUA9bNMMmDA-dx2r5kpCklxE/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/TSace11RIpo" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/curso-de-php-para-iniciantes-aula-2</feedburner:origLink></item>
		
		<item> 
		<title>Curso de PHP para iniciantes - Aula 1</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/F1KcliZKVTs/curso-de-php-para-iniciantes-aula-1</link> 
		<comments>http://tutorial.thiagobueno.net/curso-de-php-para-iniciantes-aula-1#ler</comments> 
		<pubDate>Tue, 04 Oct 2011 12:25:11 +0000</pubDate> 
		<dc:creator><![CDATA[<b>Autor:</b> <a href="http://rbtech.info/" target="_blank">Ricardo Bernardi</a> ]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/php">PHP</a>]]></category>
			
			<content:encoded><![CDATA[<img src="http://tutorial.thiagobueno.net/images/vIYEaula01.jpg" /><h2>Curso de PHP para iniciantes - Aula 1</h2></div>Curso de PHP para iniciantes
<p><a href="http://feedads.g.doubleclick.net/~a/W8DSnHIjP6H_VfO8WeNzuKgzaYk/0/da"><img src="http://feedads.g.doubleclick.net/~a/W8DSnHIjP6H_VfO8WeNzuKgzaYk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/W8DSnHIjP6H_VfO8WeNzuKgzaYk/1/da"><img src="http://feedads.g.doubleclick.net/~a/W8DSnHIjP6H_VfO8WeNzuKgzaYk/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/F1KcliZKVTs" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/curso-de-php-para-iniciantes-aula-1</feedburner:origLink></item>
		
		<item> 
		<title>Introdução ao PHP</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/dPRI2NeHQwM/introducao-ao-php</link> 
		<comments>http://tutorial.thiagobueno.net/introducao-ao-php#ler</comments> 
		<pubDate>Mon, 03 Oct 2011 17:02:14 +0000</pubDate> 
		<dc:creator><![CDATA[ <b>Fonte:</b> <a href="http://www.aprenderphp.com.br" target="_blank">http://www.aprenderphp.com.br</a>]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/php">PHP</a>]]></category>
			<description><![CDATA[<img src="http://tutorial.thiagobueno.net/images/" /><h2>Introdução ao PHP</h2></div>Uma introdução ao PHP, neste artigo descubra se o PHP é gratuito, entenda o que é Server-side e Client-side etc..]]></description>
			<content:encoded><![CDATA[<p>
	<strong><span style="font-size: 16px; ">O que é o PHP</span></strong><br />
	PHP é o acrônimo para Hypertext Preprocessor, algo como pré-processador de hiper texto, uma linguagem de programação muito utilizada principalmente para o desenvolvimento web. Apesar de ter a versão <a href="http://pt.wikipedia.org/wiki/PHP-GTK">PHP-GTK</a> para ambiente desktop. No decorrer de nosso aprendizado focaremos no <a href="http://pt.wikipedia.org/wiki/PHP">PHP</a> para desenvolvimento web.</p>
<p>
	<strong><span style="font-size: 16px; ">O PHP é gratuito?</span></strong><br />
	Sim! Para começar o PHP é <a href="http://pt.wikipedia.org/wiki/CÃ³digo_aberto">open source</a>, ou seja, código fonte aberto. Assim para obter o PHP a única coisa que deve fazer é entrar no <a href="http://www.php.net/">site do PHP</a> e fazer o <a href="http://www.php.net/downloads.php">download da versão mais nova</a>. Pois com a versão mais recente terá novas funcionalidades além de possíveis bugs terem sido corrigidos.</p>
<p>
	<strong><span style="font-size: 16px; ">PHP e o HTML</span></strong><br />
	Uma pagina em PHP normalmente possui a extensão <strong>.php</strong> (dependendo da configuração do servidor Web). No entanto nestas páginas com a extensão .php pode ser inserido normalmente o código HTML que você já esta acostumado a desenvolver. E funcionara da seguinte maneira, sempre que o servidor receber páginas com a extensão .php ele saberá que a linguagem de programação na página, interpretando HTML, e ao encontrar código PHP interpretar os mesmos, ou vice versa e mais de uma vez pois não importa a quantidade de vezes que você altera entre código HTML e PHP e se você inicia o código com um ou com outro. Resumindo podemos escrever HTML e PHP em um arquivo .php que tudo será interpretado corretamente.</p>
<p>
	<span style="color: rgb(178, 34, 34); "><em><strong><span style="font-size: 18px; ">O PHP, o Server-side e o Client-side</span></strong></em></span><br />
	<strong><span style="font-size: 16px; ">Client-side</span></strong><br />
	É tudo processado no lado do cliente. O <a href="http://pt.wikipedia.org/wiki/Client_Side_Scripts">client-side</a> é interpretado diretamente pelo browser (navegador) do usuário. Sendo assim ao acessar uma página web o HTML, CSS e JavaScript são interpretados todos pelo navegador sem intervenção nenhuma de um servidor. Por isso podemos exibir o código fonte em nosso browser e visualizar o HTML, CSS e o JavaScript.</p>
<p>
	<strong><span style="font-size: 16px; ">Server-side</span></strong><br />
	O oposto do client-side. Aqui as informações são processadas por um servidor web que interpretara e retornará o resultado que será exibido no browser. Sendo assim não é possível visualizar o código de uma aplicação rodando no <a href="http://pt.wikipedia.org/wiki/Server-side">Server-side</a>.</p>
<p>
	<strong><span style="font-size: 16px; ">E o PHP?</span></strong><br />
	O PHP é processado no servidor por isso é uma linguagem Server-side. Sendo assim suas aplicações não poderão ser copiadas por outras pessoas. Todos os processos, rotinas e funções serão feitas no servidor e o usuário recebera apenas o resultado em seu browser.</p>
<p>
	<span style="color: rgb(178, 34, 34); "><em><strong><span style="font-size: 18px; ">O que podemos fazer com o PHP</span></strong></em></span><br />
	<strong><span style="font-size: 16px; ">Interação com usuário</span></strong><br />
	Primeiramente transformação de sites estáticos, que não possuem nenhum tipo de interação, em sites dinâmicos, com maior possibilidade de interação e dinamismo. Por exemplo, com páginas estáticas não podemos ter uma sessão de comentários em nosso site, em que ao terminar de ler um artigo a pessoa preencha um campo no formulário e deixar sua opinião e no mesmo estante a sua opinião estar no site, coisas que podemos realizar com o PHP e um banco de dados.</p>
<p>
	<strong><span style="font-size: 16px; ">Facilidade na manutenção</span></strong><br />
	Imagine um site que tenha 10 itens no menu do site e cada item abre mais 5 páginas internas, temos um total de 50 páginas. Agora imagine a situação: Seu cliente liga para você e pede para inserir mais um item no menu, lembrando que o menu esta presente em todas as páginas, o que você faria? Provavelmente abriria as 50 páginas e iria copiando e colando o código do menu entre elas, trabalho braçal bem chato né?, Além de possíveis erros. Mais continuemos você inseriu o item no menu, deve ter pensado que o problema acabou, mais não, no entanto no dia seguinte o item no menu que seu cliente havia chamado de contato na realidade ele lhe enviou o nome errado pois o pessoal do marketing descobriu que o nome fale conosco tem maior apelo com os clientes. E lá vai você novamente para o mesmo trabalho braçal.</p>
<p>
	E se fosse noticias que devem ser inseridas 3 vezes ao dia? Seu cliente mandaria a você, você as incluiria e sempre que houvesse erros você teria que ir lá e corrigi-las. Além de ter uma chamada com todas as noticias que você deveria atualizar também e uma chamada com foto na página inicial. Processo chato para você e o cliente.</p>
<p>
	Com o PHP podemos separar no primeiro caso o menu em um arquivo que ao ser atualizado seria atualizado em todo o site, pois este menu seria inserido em todas as páginas pelo PHP.<br />
	E no segundo caso das noticias poderíamos criar uma área administrativa em que apenas usuários logados, os administradores, teriam acesso e poderiam inserir e editar as noticias sem precisar entrar em contato com você.</p>
<p>
	<strong><span style="font-size: 16px; ">PHP e o banco de dados</span></strong><br />
	O PHP possui acesso a diversos <a href="http://pt.wikipedia.org/wiki/Banco_de_dados">bancos de dados</a>. Sendo assim você terá uma serie de funções para poder utilizar entre os <a href="http://www.php.net/manual/pt_BR/refs.database.php">diversos tipos de bancos de dados suportados pelo PHP</a>. Em nosso aprendizado utilizaremos o <a href="http://www.mysql.com/">MySQL</a>.</p>
<p>
	<strong><span style="font-size: 16px; ">Exemplo de aplicações que podemos desenvolver com o PHP</span></strong><br />
	Com o PHP podemos desenvolver coisas como áreas restritas que necessitem de autenticação, sistemas de comentários para artigos, noticias etc. Envio de emails, sistemas de noticias, lojas virtuais, redes sociais e qualquer outra coisa que você possa imaginar.<br />
	Uma aplicação web de grande porte que foi desenvolvida em PHP, foi a <a href="http://pt.wikipedia.org/wiki/PÃ¡gina_principal">Wikipédia</a>. Nela você encontra várias coisas como o sistema de autenticação, publicação e edição de artigos, upload de fotos entre outros.<br />
	<br />
	<strong><span style="font-size: 16px; ">Por que o PHP?</span></strong><br />
	Utilizado amplamente no mercado em grandes empresas como na gigante <a href="http://www.yahoo.com/">Yahoo!</a>, passando pela rede social <a href="http://www.facebook.com/">Facebook</a>, a enciclopédia livre e gratuita <a href="http://www.wikipedia.org/">Wikipedia</a> podemos citar também o <a href="http://www.flickr.com/">flickr</a>, <a href="http://sourceforge.net/">SourceForge</a>, <a href="http://digg.com/">Digg</a> entre outras. E para quem é iniciante o PHP possui uma baixa curva de aprendizado com um material amplo, <a href="http://www.php.net/manual/pt_BR/index.php">inclusive em português</a>, e uma sintaxe bastante simples além de ser uma linguagem bastante robusta e flexível. Sem contar um fator essencial a grande <a href="http://www.php.org.br/">comunidade de desenvolvedores PHP</a>.</p>
<p><a href="http://feedads.g.doubleclick.net/~a/j4g8910xvdtrsXj9O7TAjyAv_PY/0/da"><img src="http://feedads.g.doubleclick.net/~a/j4g8910xvdtrsXj9O7TAjyAv_PY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/j4g8910xvdtrsXj9O7TAjyAv_PY/1/da"><img src="http://feedads.g.doubleclick.net/~a/j4g8910xvdtrsXj9O7TAjyAv_PY/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/dPRI2NeHQwM" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/introducao-ao-php</feedburner:origLink></item>
		
		<item> 
		<title>Classe para Carregar XML</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/t5VIbHd3RsU/classe-para-carregar-xml</link> 
		<comments>http://tutorial.thiagobueno.net/classe-para-carregar-xml#ler</comments> 
		<pubDate>Mon, 03 Oct 2011 15:40:45 +0000</pubDate> 
		<dc:creator><![CDATA[<b>Autor:</b> <a href="http://vimeo.com/user2329782" target="_blank">Michel Ara�jo</a> ]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/as3">ActionScript 3.0</a>]]></category>
			
			<content:encoded><![CDATA[<img src="http://b.vimeocdn.com/ts/347/454/34745492_640.jpg" /><h2>Classe para Carregar XML</h2></div>Neste vídeo-tutorial vou criar uma classe em ActionScript 3 para carregar arquivos XML externos
<p><a href="http://feedads.g.doubleclick.net/~a/hhE65LWerV-8CLM3jgWr6iMW3-g/0/da"><img src="http://feedads.g.doubleclick.net/~a/hhE65LWerV-8CLM3jgWr6iMW3-g/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/hhE65LWerV-8CLM3jgWr6iMW3-g/1/da"><img src="http://feedads.g.doubleclick.net/~a/hhE65LWerV-8CLM3jgWr6iMW3-g/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/t5VIbHd3RsU" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/classe-para-carregar-xml</feedburner:origLink></item>
		
		<item> 
		<title>Iniciando com Adobe AIR for Android</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/x5uuvaz0v4o/iniciando-com-adobe-air-for-android</link> 
		<comments>http://tutorial.thiagobueno.net/iniciando-com-adobe-air-for-android#ler</comments> 
		<pubDate>Mon, 03 Oct 2011 15:28:24 +0000</pubDate> 
		<dc:creator><![CDATA[<b>Autor:</b> <a href="http://www.leonardofranca.com.br/" target="_blank">Leonardo Fran�a</a> ]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/adobe-air">Adobe AIR</a>]]></category>
			<description><![CDATA[<img src="http://tutorial.thiagobueno.net/images/zbGzair-for-android.jpg" /><h2>Iniciando com Adobe AIR for Android</h2></div>Já temos há algum tempo a possibilidade de criar aplicativos para Android com a Flash Platform, usando o Adobe AIR]]></description>
			<content:encoded><![CDATA[<p>
	<img alt="" src="http://localhost/site/thiagobuenoweb/tutorial2/public/thiago-bueno/higAmWyOQYyRB3W5Efairandroid.jpg" style="float: left; width: 85px; height: 97px; " />Já temos há algum tempo a possibilidade de criar aplicativos para Android com a Flash Platform, usando o Adobe AIR ou Flash Player. Além disso o Android vem se tornando a cada dia mais popular, diariamente surgem varios aparelhos cada vez mais poderosos rodando o sistema operacional do Google e a Android Market foi reformulada para facilitar os usuarios e desenvolvedores.<br />
	Um detalhe importante é que não são todas as versões do Android que suportam o Adobe AIR e o Flash Player, é necessario que o smartphone tenha o Android 2.2(Froyo) ou posterior, e as versões do AIR deve ser a 2.5 ou Flash Player 10.1.</p>
<p>
	<strong><em>O desenvolvimento de aplicativos com a Flash Platform para o Android só é possivel a partir do Android 2.2(Froyo) e usando Adobe AIR 2.5 e Flash Player 10.1</em></strong></p>
<p>
<center>
	<img alt="" src="http://localhost/site/thiagobuenoweb/tutorial2/public/thiago-bueno/QrBwj52KfMSlWM93a3air-for-android.jpg" style="width: 450px; height: 257px; " /><br />
	<span style="color: rgb(128, 128, 128); "><strong> AIR for Android</strong></span></p>
</center>
<p>
	<span style="font-size: 16px; "><strong>Ferramentas de desenvolvimento</strong></span><br />
	<strong>Adobe Flash CS5 Professional</strong> - É possivel desenvolver aplicativos para Android usando o Adobe Flash CS5 Professional, na ultima versão foi adicionado um profile "AIR for Android", gerando o arquivo ja com o tamanho padrão de 480×800. Por enquanto não existem componentes pré-programados para Android e não é recomendado usar os já existentes no Flash.</p>
<p>
	<strong>Adobe Flash Builder 4 (burrito)</strong> - A Adobe disponilibizou juntamente com o Flash Builder 4 (burrito), o SDK do Flex versão 4.5, com componentes otimizados para dispositivos moveis, para quem se recordar, a Adobe tinha um projeto de uma versão do Flex para mobile chamado "<a href="http://blogs.adobe.com/labs/archives/2010/06/updated-information-regarding-hero-flex-and-mobile-previously-codenamed-slider-is-now-available-on-labs.html">Slider</a>", em virtude do rápido crescimento do processamento do smartphones atuais, a Adobe decidiu juntar esse projeto ao SDK padrao do Flex.</p>
<p>
	<strong>Qualquer editor de texto</strong> - Você pode usar qualquer editor de texto salvando na extensão .as ou seu editor ActionScript favorito.</p>
<p>
	<strong>Runtime Adobe AIR</strong><br />
	Para que seu aplicativo rode em um dispotivo com Android, é necessario que seja instalado o runtime do Adobe AIR para logo em seguida você instalar seu aplicativo.</p>
<p>
	<strong>Distribuição</strong><br />
	Você pode gerar o instalador do seu aplicativo pelo Flash Builder, Flash CS5 ou por linha de comando usando o ADT. É gerado um aplicativo com a extensão .apk. A distribuição pode ser feita atraves da Android Market, para se tornar um publisher da Android Market, basta pagar a inscrição de 25 dolares.<br />
	Acompanhe esse tutorial sobre <a href="http://blog.cidandrade.pro.br/tecnologia/tutorial-como-publicar-sua-aplicacao-no-android-market/">como publicar seu aplicativo na Android Market</a><br />
	Caso você crie algo para rodar no Flash Player, basta rodar pelo navegador do smartphone, a Adobe tem uma página para que você possa ver alguns sites que usam Flash Player e que foram otimizados para mobile. Acesse o <a href="http://m.flash.com/">Adobe Flash Showcase for Mobile</a></p>
<p>
	<strong>Acompanhe alguns tutoriais:</strong><br />
	<a href="http://labs.adobe.com/technologies/flexsdk_hero/samples/">Exemplos no Adobe Labs</a><br />
	<a href="http://www.adobe.com/newsletters/edge/january2011/articles/article5/index.html">Advanced Android development</a><br />
	<a href="http://www.adobe.com/devnet/flex/articles/employee-directory-android-flex.html">Creating mobile apps for Android using Flash Builder "Burrito" and Flex SDK Hero</a><br />
	<a href="http://www.adobe.com/devnet/flex/testdrivemobile/articles/mtd_5_1.html">Test Drive for Mobile: Style the application</a></p>
<p>
	Nos proximos artigos, mostrarei como usar alguns recursos do AIR for Android</p>
<p><a href="http://feedads.g.doubleclick.net/~a/lMDHEVAxYv7_goY6FLcn5pIaGok/0/da"><img src="http://feedads.g.doubleclick.net/~a/lMDHEVAxYv7_goY6FLcn5pIaGok/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/lMDHEVAxYv7_goY6FLcn5pIaGok/1/da"><img src="http://feedads.g.doubleclick.net/~a/lMDHEVAxYv7_goY6FLcn5pIaGok/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/x5uuvaz0v4o" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/iniciando-com-adobe-air-for-android</feedburner:origLink></item>
		
		<item> 
		<title>Multi Touch com Adobe AIR 2.0</title> 
		<link>http://feedproxy.google.com/~r/ThiagoBuenoTutoriais/~3/k0s7J8qpC10/multi-touch-com-adobe-air-2.0</link> 
		<comments>http://tutorial.thiagobueno.net/multi-touch-com-adobe-air-2.0#ler</comments> 
		<pubDate>Sat, 17 Sep 2011 14:35:26 -0300</pubDate> 
		<dc:creator><![CDATA[<b>Autor:</b> <a href="" target="_blank">Thiago Bueno</a> <b>Fonte:</b> <a href="http://www.gotoandlearn.com/play.php?id=119" target="_blank">http://www.gotoandlearn.com/play.php?id=119</a>]]></dc:creator> 
			<category><![CDATA[<a href="http://tutorial.thiagobueno.net/adobe-air">Adobe AIR</a>]]></category>
			<description><![CDATA[<img src="http://tutorial.thiagobueno.net/images/19.jpg" /><h2>Multi Touch com Adobe AIR 2.0</h2></div>Aprenda a fazer uma aplicação Multi Touch(Arrastar, Zoom, Rotacionar etc.. com gestos da sua mão) com o Flash CS5   Adobe AIR]]></description>
			<content:encoded><![CDATA[Para não ter muito trabalho resolvi fazer o arquivo faça download dele pra começar.<br />
<br />
<script type="text/javascript"> 
	var flashvars = {};
	flashvars.file = "Multi_Touch.rar";
	flashvars.version = "flashcs5";
	var params = {};
	params.allowfullscreen = "true";
	params.allowscriptaccess = "always";
	params.wmode = "transparent";
	params.menu = "false";
	var attributes = {};
	swfobject.embedSWF("download.swf", "Download", "350", "80", "10", "expressInstall.swf", flashvars, params, attributes);
</script>
<div id="Download">
<a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a>
</div>
<br />
Descompacte o arquivo, e abra o Multi_Touch.fla<br />
Veja que tem apenas um frame e o <b>box</b> não está na <b>Scene</b> ele está na <b>Library</b><br />
<br />
Clique no único Frame e escreva a seguinte Action<br />
    
<pre class="brush: as3">
import flash.events.TransformGestureEvent;
import flash.display.Sprite;
import flash.events.MouseEvent;

//configurações do stage
stage.displayState = StageDisplayState.FULL_SCREEN_INTERACTIVE;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;

//adicionando eventos de gestos para o stage, Zoom e Rotação
stage.addEventListener(TransformGestureEvent.GESTURE_ZOOM, onStageZoom);
stage.addEventListener(TransformGestureEvent.GESTURE_ROTATE, onStageRotate);

var Con:Sprite = new Sprite();
Con.x = stage.stageWidth * 0.5;
Con.y = stage.stageHeight * 0.5;
addChild(Con);

//criando os "Box's" e seus eventos
for(var i:uint = 0; i < 10; i++){
	var b:Sprite = Sprite(new box());
	//criando os Box's em todo stage
	b.x = Math.random() * stage.stageWidth - (stage.stageWidth * 0.5);
	b.y = Math.random() * stage.stageHeight - (stage.stageHeight * 0.5);
	b.rotation = Math.random() * 360;
	//eventos para arrastar
	b.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
	b.addEventListener(MouseEvent.MOUSE_UP, onUp);
	//eventos para gestos de Zoom
	b.addEventListener(TransformGestureEvent.GESTURE_ZOOM, onZoom);
	//evento de gestos de Rotação
	b.addEventListener(TransformGestureEvent.GESTURE_ROTATE, onRotate);
	Con.addChild(b);
}

//função para quando mover o objeto
function onDown(e:MouseEvent){
	var b:Sprite = Sprite(e.currentTarget);
	Con.addChild(b);
	b.startDrag();
}
//função para quando soltar o objeto
function onUp(e:MouseEvent){
	var b:Sprite = Sprite(e.currentTarget);
	b.stopDrag();
}
//função para o Zoom
function onZoom(e:TransformGestureEvent){
	e.stopImmediatePropagation();
	var b:Sprite = Sprite(e.currentTarget);
	b.scaleX *= e.scaleX;
	b.scaleY = b.scaleY;
}
//função para a Rotação
function onRotate(e:TransformGestureEvent){
	e.stopImmediatePropagation();
	var b:Sprite = Sprite(e.currentTarget);
	b.rotation += e.rotation;
}
//função para Zoom do stage
function onStageZoom(e:TransformGestureEvent){
	Con.scaleX *= e.scaleX;
	Con.scaleY *= e.scaleY;
}
//função para a Rotação do stage
function onStageRotate(e:TransformGestureEvent){
	Con.rotation += e.rotation;
}
</pre>

Teste seu aplicativo, Control > Test Movie será executado em FullScreen aperte "ESC" para sair, você também vai precisar de algum aparelho Multi Touch para testar com perfeição.<br />
<br />
Bom é isso.<br />
Abraço<br />
<p><a href="http://feedads.g.doubleclick.net/~a/zibFpDmk7QhwWZSL_R2g-8Q_Ly8/0/da"><img src="http://feedads.g.doubleclick.net/~a/zibFpDmk7QhwWZSL_R2g-8Q_Ly8/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/zibFpDmk7QhwWZSL_R2g-8Q_Ly8/1/da"><img src="http://feedads.g.doubleclick.net/~a/zibFpDmk7QhwWZSL_R2g-8Q_Ly8/1/di" border="0" ismap="true"></img></a></p><img src="http://feeds.feedburner.com/~r/ThiagoBuenoTutoriais/~4/k0s7J8qpC10" height="1" width="1"/>]]></content:encoded>
		<feedburner:origLink>http://tutorial.thiagobueno.net/multi-touch-com-adobe-air-2.0</feedburner:origLink></item>
		</channel> 
</rss>

