<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>BLOG::Nivaldo &#187; Treinamento</title>
	<atom:link href="http://www.nivaldoarruda.com.br/tag/treinamento/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nivaldoarruda.com.br</link>
	<description>Tecnologias Web, PHP e Aquários</description>
	<lastBuildDate>Thu, 03 Jun 2010 13:14:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Repetição &#8211; Parte 6</title>
		<link>http://www.nivaldoarruda.com.br/2010/03/21/curso-de-php-modulo-basico-estrutura-de-repeticao-parte-6/</link>
		<comments>http://www.nivaldoarruda.com.br/2010/03/21/curso-de-php-modulo-basico-estrutura-de-repeticao-parte-6/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 20:27:26 +0000</pubDate>
		<dc:creator>Nivaldo Arruda</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Treinamento]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[Básico]]></category>
		<category><![CDATA[curso]]></category>
		<category><![CDATA[Estrutura de repetição]]></category>

		<guid isPermaLink="false">http://www.nivaldoarruda.com.br/?p=635</guid>
		<description><![CDATA[Dando continuidade ao meu Curso de PHP, vamos falar a respeito das Estruturas de repetição (comandos FOR e While). Repetir um bloco de comandos é algo muito corriqueiro na vida de um desenvolvedor. Por mais simples que seja um sistema ou um site que você virá a fazer, pode acreditar que você precisará usar uma [...]

<br/><br/>
<strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2010/01/23/curso-de-php-modulo-basico-estrutura-de-controle-parte-5/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Controle &#8211; Parte 5'>Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Controle &#8211; Parte 5</a> <small>Curso de PHP &#8211; Estrutura de controles Durante o desenvolvimento...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-variaveis-e-constantes-parte-4/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Variáveis e Constantes &#8211; Parte 4'>Curso de PHP &#8211; Módulo Básico &#8211; Variáveis e Constantes &#8211; Parte 4</a> <small>Variáveis Variáveis são endereços de memória que contém valores que...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-parte-1/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Parte 1'>Curso de PHP &#8211; Módulo Básico &#8211; Parte 1</a> <small>Nos ultimos tempos, o número de visitantes que estão caindo...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><p>Dando continuidade ao meu <a href="http://www.nivaldoarruda.com.br/curso-de-php">Curso de PHP</a>, vamos falar a respeito das <strong>Estruturas de repetição</strong> (comandos <strong>FOR</strong> e <strong>While</strong>).</p>
<p>Repetir um bloco de comandos é algo muito corriqueiro na vida de um desenvolvedor. Por mais simples que seja um sistema ou um site que você virá a fazer, pode acreditar que você precisará usar uma dessas estruturas. Seja para listar produtos/clientes, realizar operações matemáticas ou mesmo enviar emails. Vamos ver alguns exemplos de uso.</p>
<p>Ex.: Escreva o número &#8220;1&#8243; na tela.</p>
<pre class="brush: php">
&lt;?
echo 1;
?&gt;
</pre>
<p>Simples e Fácil. Agora escreva o número &#8220;1&#8243; e o número &#8220;2&#8243; na tela (um em cada linha).</p>
<pre class="brush: php">
&lt;?
echo 1.&quot;&lt;br/&gt;&quot;;
echo 2.&quot;&lt;br/&gt;&quot;;
?&gt;
</pre>
<p>Já começa a ficar estranho, não? Agora digamos que você precise escrever do número 1 ao número 10 na tela.</p>
<pre class="brush: php">
&lt;?
echo 1.&quot;&lt;br/&gt;&quot;;
echo 2.&quot;&lt;br/&gt;&quot;;
echo 3.&quot;&lt;br/&gt;&quot;;
...
echo 9.&quot;&lt;br/&gt;&quot;;
echo 10.&quot;&lt;br/&gt;&quot;;
?&gt;
</pre>
<p>Perceba que o código foi abreviado após o número &#8220;3&#8243;, caso contrário, esse script já ficaria muito longo para ser escrito aqui. Agora imagine se você precisasse escrever até o número 300. Faria 300 linhas iguais, mudando apenas o número? Com certeza funcionaria, mas seu código ficaria muito poluido e grande. Outro problema: E como você faria se o número total de vezes fosse dinâmico? viesse de uma consulta ao banco de dados por exemplo, você não teria como saber quantos &#8220;echos&#8221; deveria escrever. Então vamos reescrever esse programa utilizando a nossa primeira função da estrutura de repetição, o laço &#8220;for&#8221;. Veja a diferença:</p>
<pre class="brush: php">
&lt;?
for($contador=1;$contador&lt;=300;$contador++){
    echo $contador.&quot;&lt;br/&gt;&quot;;
}
?&gt;
</pre>
<p>Essas três linhas de códigos vão surtir exatamente o mesmo efeito do que se você tivesse escrito 300 &#8220;echo&#8221; no seu script. Agora entenda como executar esse novo comando. Todo a regra dele está apenas nessa linha:</p>
<pre class="brush: php">
for($contador=1;$contador&lt;=300;$contador++){
</pre>
<p>Para entendermos o seu funcionamento, experiemnte visualiza-la em 4 partes diferentes:</p>
<p>* <strong>for()</strong> -> Nome de um dos método nativo do PHP(e de quase todas as outras linguagens de programação) para controle de repetição. (<a href="http://www.php.net/for">http://www.php.net/for</a>)<br />
* <strong>$contador=1</strong> -> Aqui você define uma variável de controle, neste caso &#8220;$contador&#8221;, e atribuí o seu valor inicial em &#8220;1&#8243;;<br />
* <strong>$contador<=300 </strong>-> Aqui você define uma condição de continuidade para o laço, isto é, o for irá executar o bloco de comando dentro dele, enquanto<br />
essa condição for verdadeira. Neste caso, o laço irá executar enquanto $contador for menor ou igual a 300.<br />
*<strong>$contador++</strong> -> Essa é a ultima expressão do for. Aqui você define o que deve acontecer com a variável de controle após cada iteração. Nesse exemplo,<br />
após executar o echo, ele irá incrementar o $contador em 1.</p>
<p>Assim, a cada volta desse loop, a variável $contador irá somar +1 em seu valor até que o total seja maior que 300, que é quando o for termina e o interpretador passa a executar o próximo bloco de comando (caso exista).</p>
<p>O próximo comando, é o while (<a href="http://www.php.net/while">http://www.php.net/while</a>). Ele também é um comando de repetição, mas é um pouco mais simples que o &#8220;for&#8221;. Basicamente um while funciona da seguinte maneira:</p>
<pre class="brush: php">
&lt;?php
while (expressao){
    Comando 1;
    Comando 2;
}
?&gt;
</pre>
<p>A expressão é uma comparação. O laço será executado enquanto essa comparação for verdadeira. Se você necessitar de um contador dentro do seu loop, terá que faze-lo de forma manual. Ex.</p>
<pre class="brush: php">
&lt;?php
$i = 0;
while ($i&lt;10){
    echo $i.&quot;&lt;br/&gt;&quot;;
    $i++;
}
?&gt;
</pre>
<p>*Nota: Lembre-se. O while continuará sua execução, até que a expressão informada se torne falsa. Então, Tome muito cuidado com o tipo de comparação que você irá realizar para não acabar criando o famoso &#8220;<strong>loop infinito</strong>&#8220;.</p>
<p>Uma &#8220;variação&#8221; do comando while é o &#8220;do-while&#8221;, a diferença entre eles está no processo de verificação da expressão. No while, primeiro o <strong>PHP </strong>valida a expressão, se for verdadeira, ele executa os comando, até que ela se torne falsa. Enquanto o &#8220;do-while&#8221; executa o camando e só depois valida a expressão(se ela for verdadeira, ele continua executando). Ex:</p>
<pre class="brush: php">
&lt;?php
$i = 3;
do {
    echo $i;
    $i--;
} while ($i &gt; 0);
?&gt;
</pre>
<p>É isso, agora muito treino. Que tal fazer alguns exercícios?</p>
<ol>
<li>Escreva a lista de números começando de 300 e indo até 0(zero)</li>
<li>Escreva uma lista de números <em>PARES</em>, de 0 a 300</li>
</ol>
<p>Abraços</p>
</div>

<br/><br/><p><strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2010/01/23/curso-de-php-modulo-basico-estrutura-de-controle-parte-5/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Controle &#8211; Parte 5'>Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Controle &#8211; Parte 5</a> <small>Curso de PHP &#8211; Estrutura de controles Durante o desenvolvimento...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-variaveis-e-constantes-parte-4/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Variáveis e Constantes &#8211; Parte 4'>Curso de PHP &#8211; Módulo Básico &#8211; Variáveis e Constantes &#8211; Parte 4</a> <small>Variáveis Variáveis são endereços de memória que contém valores que...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-parte-1/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Parte 1'>Curso de PHP &#8211; Módulo Básico &#8211; Parte 1</a> <small>Nos ultimos tempos, o número de visitantes que estão caindo...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.nivaldoarruda.com.br/2010/03/21/curso-de-php-modulo-basico-estrutura-de-repeticao-parte-6/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Controle &#8211; Parte 5</title>
		<link>http://www.nivaldoarruda.com.br/2010/01/23/curso-de-php-modulo-basico-estrutura-de-controle-parte-5/</link>
		<comments>http://www.nivaldoarruda.com.br/2010/01/23/curso-de-php-modulo-basico-estrutura-de-controle-parte-5/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 23:55:53 +0000</pubDate>
		<dc:creator>Nivaldo Arruda</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Treinamento]]></category>
		<category><![CDATA[misc]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[curso]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.nivaldoarruda.com.br/?p=603</guid>
		<description><![CDATA[Curso de PHP &#8211; Estrutura de controles Durante o desenvolvimento de um projeto é muito comum que o sistema precise receber alguma informação e com base nessa informação, tomar um decisão para escolher o próximo caminho(ou bloco de comandos) a ser executado. Um exemplo rápido disso é o login. Caso a pessoa esteja logado no [...]

<br/><br/>
<strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2010/03/21/curso-de-php-modulo-basico-estrutura-de-repeticao-parte-6/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Repetição &#8211; Parte 6'>Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Repetição &#8211; Parte 6</a> <small>Dando continuidade ao meu Curso de PHP, vamos falar a...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-iniciando-em-php-parte-3/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Iniciando em PHP &#8211; Parte 3'>Curso de PHP &#8211; Módulo Básico &#8211; Iniciando em PHP &#8211; Parte 3</a> <small>Iniciando em PHP A partir de agora, iremos supor que...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-parte-1/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Parte 1'>Curso de PHP &#8211; Módulo Básico &#8211; Parte 1</a> <small>Nos ultimos tempos, o número de visitantes que estão caindo...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><p><strong>Curso de PHP &#8211; Estrutura de controles</strong></p>
<p>Durante o desenvolvimento de um <strong>projeto </strong>é muito comum que o sistema precise receber alguma informação e com base nessa informação, tomar um decisão para escolher o próximo caminho(ou bloco de comandos) a ser executado. Um exemplo rápido disso é o login. Caso a pessoa esteja logado no site, o mesmo deve apresentar um conteudo diferente do caso do usuário ser apenas um visitante. Vamos ilustrar esse exemplo, com 2 estruturas de controle encontradas no PHP.</p>
<p>if / else</p>
<p>o comando &#8220;if&#8221; com certeza é o mais conhecido na área da programação. Você faz uma pergunta para o PHP e caso essa seja verdadeira, ele irá executar o que lhe foi mandado, ou caso seja falsa, executará outro bloco (opcional)</p>
<p>ex:</p>
<pre class="brush: php">
if($logado == true){
   echo &quot;Olá usuário logado.&quot;;
}
</pre>
<p>Esse bloco acima, irá imprimir a mensagem entre aspas, caso a variavel $logado seja verdadeira. Se ela for falsa, nada acontece. Agora veja o mesmo exemplo com else:</p>
<pre class="brush: php">
if($logado == true){
   echo &quot;Olá usuário logado.&quot;;
}else{
   echo &quot;Olá visitante.&quot;;
}
</pre>
<p>Esse diferencial será executado, apenas quando a condição do IF for falsa. Então, se o usuário não estiver logado, o sistema irá trata-lo como visitante. Para aninhar ifs,  isto é, realizar várias validações no mesmo bloco, você pode usar o camando elseif. Veja o exemplo modificado a seguir:</p>
<pre class="brush: php">
if($logado == 1){
   echo &quot;Olá usuário logado.&quot;;
}elseif($logado==2){
   echo &quot;Olá Administrador.&quot;;
}else{
   echo &quot;Olá visitante.&quot;;
}
</pre>
<p>Percebe a diferença? Antes do PHP escapar para o ELSE, ele faz mais uma verificação para ver se a váriavel $logado possuí o valor 2. Caso seja verdadeiro, ele imprime a mensagem senão, cai no else normalmente.</p>
<p>O PHP nos fornece uma outra estrutra chamada &#8220;switch&#8221;. Ela nos permite fazer &#8220;IFs aninhados&#8221; de forma muito mais elegante. A diferença é que a expressão para  todas as opções deve ser a mesma (enquanto no &#8220;if aninhado&#8221; você pode mudar a expressão). Outros dois detalhes importante são que: ao fim de cada bloco de opções, você deve adicionar a palavra reservada &#8220;break&#8221; para que o interpretador não continue executando os outros códigos e que o &#8220;else&#8221; não existe no switch. O comando que realiza a mesma função dele chama-se &#8220;default&#8221;. veja o mesmo exemplo do &#8220;if aninhado&#8221; reescrito com switch:</p>
<pre class="brush: php">
switch($logado){
   case 1: echo &quot;Olá usuário logado.&quot;;
              break;
   case 2: echo &quot;Olá Administrador.&quot;;
              break;
   default: echo &quot;Olá visitante.&quot;;
}
</pre>
<p>O Código fica muito mais elegante e limpo. Principalmente quando existem muitos caminhos diferentes para seguir.</p>
</div>

<br/><br/><p><strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2010/03/21/curso-de-php-modulo-basico-estrutura-de-repeticao-parte-6/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Repetição &#8211; Parte 6'>Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Repetição &#8211; Parte 6</a> <small>Dando continuidade ao meu Curso de PHP, vamos falar a...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-iniciando-em-php-parte-3/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Iniciando em PHP &#8211; Parte 3'>Curso de PHP &#8211; Módulo Básico &#8211; Iniciando em PHP &#8211; Parte 3</a> <small>Iniciando em PHP A partir de agora, iremos supor que...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-parte-1/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Parte 1'>Curso de PHP &#8211; Módulo Básico &#8211; Parte 1</a> <small>Nos ultimos tempos, o número de visitantes que estão caindo...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.nivaldoarruda.com.br/2010/01/23/curso-de-php-modulo-basico-estrutura-de-controle-parte-5/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Curso de PHP &#8211; Módulo Básico &#8211; Variáveis e Constantes &#8211; Parte 4</title>
		<link>http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-variaveis-e-constantes-parte-4/</link>
		<comments>http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-variaveis-e-constantes-parte-4/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 01:35:29 +0000</pubDate>
		<dc:creator>Nivaldo Arruda</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Treinamento]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[curso]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.nivaldoarruda.com.br/?p=533</guid>
		<description><![CDATA[Variáveis Variáveis são endereços de memória que contém valores que podem ser acessador pelo seu sistema. Você pode guardar os mais diversos tipos de dados em uma variável, desde texto puro até valores booleanos(verdadeiro ou falso) passando por números inteiros e decimais. No PHP as variáveis podem ser criadas dinâmicamentes, sem precisar ser declaradas anteriormente [...]

<br/><br/>
<strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-iniciando-em-php-parte-3/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Iniciando em PHP &#8211; Parte 3'>Curso de PHP &#8211; Módulo Básico &#8211; Iniciando em PHP &#8211; Parte 3</a> <small>Iniciando em PHP A partir de agora, iremos supor que...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-parte-1/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Parte 1'>Curso de PHP &#8211; Módulo Básico &#8211; Parte 1</a> <small>Nos ultimos tempos, o número de visitantes que estão caindo...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2010/01/23/curso-de-php-modulo-basico-estrutura-de-controle-parte-5/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Controle &#8211; Parte 5'>Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Controle &#8211; Parte 5</a> <small>Curso de PHP &#8211; Estrutura de controles Durante o desenvolvimento...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><p><center><script type="text/javascript"><!--
google_ad_client = "pub-6037690795851697";
/* Banner gráfico, 468x60, criado 19/02/09 */
google_ad_slot = "2783505197";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></center></p>
<h2>Variáveis</h2>
<p>Variáveis são endereços de memória que contém valores que podem ser acessador pelo seu sistema. Você pode guardar os mais diversos tipos de dados em uma variável, desde texto puro até valores booleanos(verdadeiro ou falso) passando por números inteiros e decimais.</p>
<p>No PHP as variáveis podem ser criadas dinâmicamentes, sem precisar ser declaradas anteriormente (Apesar de ser uma boa forma de deixar seu código legível), outro ponto forte é o fato de PHP possuir uma tipagem fraca de variáveis, não interferindo no tipo de dados que você seta nela e podendo alterar o formato a qualquer momento sem usar nenhum tipo de conversão. As  variáveis começam sempre com o caractere &#8220;$&#8221; (cifrão) seguido pelo nome dela e devem seguir algumas regras para ser uma variável válida.</p>
<ul>
<li>Um nome de variável válido se inicia com uma letra ou sublinhado, seguido de qualquer número de letras, algarismos ou sublinhados</li>
<li>Não podem começar com números</li>
<li>Não podem conter caracteres especiais (#, %, /, \, (, ), &#8230;, etc)</li>
<li>As variáveis são case-sensitive, isto é, o interpretador do PHP irá fazer distinção entre caracteres maiusculos e minusculos.</li>
</ul>
<p>Obs: $this é uma variável especial que não pode ser atribuída.</p>
<p>ex.:</p>
<pre class="brush: php">
&lt;?php
$exemplo_string  = &quot;Isso é um texto&quot;;
$exemplo_inteiro = 1;
$exemplo_float   = 1.10;
$exemplo_boleano = false;
?&gt;
</pre>
<p>O PHP suporta criação de variáveis por referência, isto é, permite que uma variável seja um &#8220;apelido&#8221; para outra ou um &#8220;ponteiro&#8221;. Nesse caso, <span style="text-decoration: underline;">quando qualquer uma das variáveis for alterada a outra será modificado automaticamente</span> .</p>
<p>Veja um exemplo:</p>
<pre class="brush: php">
&lt;?php
	$original = &#039;Sou a verdadeira&#039;;
	$referencia = &amp;amp;amp;$original;

	echo $original.&#039; - &#039;.$referencia;
?&gt;
</pre>
<p>Esse pequeno exemplo irá imprimir:</p>
<p>-&gt; Sou a verdadeira &#8211; Sou a verdadeira</p>
<h2>OPERAÇÕES COM VARIÁVEIS</h2>
<p><strong>&gt; = </strong>Maior que</p>
<p><strong>&gt;= =</strong> Maior ou igual à</p>
<p><strong>&lt; =</strong> Menor que</p>
<p><strong>&lt;= =</strong> Menor ou igual à</p>
<p><strong>== </strong>= Igual à</p>
<p><strong>=== </strong>= Realmente igual à (Compara os valores e os tipos dos dados)</p>
<p><strong>$a++</strong> = Testa $a e depois incrementa em 1</p>
<p><strong>$a&#8211;</strong> = Testa $a e depois decrementa em 1</p>
<p><strong>++$a</strong> = Incrementa e depois testa $a</p>
<p><strong>&#8211;$a</strong> = Decrementa e depois testa $a</p>
<p><strong>Todos os operadores:</strong></p>
<p>Para ter acesso a lista atualizada de operadores, acesse:</p>
<p>http://br.php.net/manual/pt_BR/language.operators.php</p>
<h2>CONSTANTES</h2>
<p>Constantes são um identificador para um valor único e que, como o seu nome sugere, não pode ser alterado em tempo de execução. Por convenção, o nomes de constantes são sempre em maiúsculas e seguem o mesmo padrão de nomes das variáveis.</p>
<ul>
<li>Um nome de constante válido se inicia com uma letra ou sublinhado, seguido de qualquer número de letras, algarismos ou sublinhados</li>
<li>Não podem conter o caractere $(cifrão)</li>
<li>Não podem começar com números</li>
<li>Não podem conter caracteres especiais (#, %, /, \, (, ), &#8230;, etc)</li>
<li>Por convenção use sempre caracteres maiusculos para as constantes.</li>
<li>Constantes podem ser definidas e acessadas de qualquer lugar sem que a regras de escopo de variáveis seja aplicadas;</li>
<li>Depois de criadas, as constantes não podem ser eliminadas ou terem seus valores alterados</li>
<li>Somente dados escalares (boolean, integer, float e string) pode ser colocados em constantes.</li>
</ul>
<p>Para criar uma constante utilize o comando &#8220;define&#8221;, cujo primeiro parametro é o nome da constante e o segundo é o seu valor, ex.:</p>
<pre class="brush: php">
&lt;?php
	define(&quot;PRIMEIRA_CONSTANTE&quot;, &quot;Sou uma constante.&quot;);
	echo PRIMEIRA_CONSTANTE;
?&gt;
</pre>
</div>

<br/><br/><p><strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-iniciando-em-php-parte-3/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Iniciando em PHP &#8211; Parte 3'>Curso de PHP &#8211; Módulo Básico &#8211; Iniciando em PHP &#8211; Parte 3</a> <small>Iniciando em PHP A partir de agora, iremos supor que...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-parte-1/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Parte 1'>Curso de PHP &#8211; Módulo Básico &#8211; Parte 1</a> <small>Nos ultimos tempos, o número de visitantes que estão caindo...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2010/01/23/curso-de-php-modulo-basico-estrutura-de-controle-parte-5/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Controle &#8211; Parte 5'>Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Controle &#8211; Parte 5</a> <small>Curso de PHP &#8211; Estrutura de controles Durante o desenvolvimento...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-variaveis-e-constantes-parte-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Curso de PHP &#8211; Módulo Básico &#8211; Iniciando em PHP &#8211; Parte 3</title>
		<link>http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-iniciando-em-php-parte-3/</link>
		<comments>http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-iniciando-em-php-parte-3/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 01:23:46 +0000</pubDate>
		<dc:creator>Nivaldo Arruda</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Treinamento]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[curso]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.nivaldoarruda.com.br/?p=527</guid>
		<description><![CDATA[Iniciando em PHP A partir de agora, iremos supor que você já possui o PHP e o apache corretamente instalados e configurados em sua máquina. Por padrão iremos utilizar nomes de arquivos com extensão .php e recomendamos que você crie uma pasta para cada parte desse curso, assim se manterá organizado e terá seus exemplos [...]

<br/><br/>
<strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2010/01/23/curso-de-php-modulo-basico-estrutura-de-controle-parte-5/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Controle &#8211; Parte 5'>Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Controle &#8211; Parte 5</a> <small>Curso de PHP &#8211; Estrutura de controles Durante o desenvolvimento...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2010/03/21/curso-de-php-modulo-basico-estrutura-de-repeticao-parte-6/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Repetição &#8211; Parte 6'>Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Repetição &#8211; Parte 6</a> <small>Dando continuidade ao meu Curso de PHP, vamos falar a...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-parte-1/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Parte 1'>Curso de PHP &#8211; Módulo Básico &#8211; Parte 1</a> <small>Nos ultimos tempos, o número de visitantes que estão caindo...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><h2>Iniciando em PHP</h2>
<p>A partir de agora, iremos supor que você já possui o PHP e o apache corretamente instalados e configurados em sua máquina. Por padrão iremos utilizar nomes de arquivos com extensão .php e recomendamos que você crie uma pasta para cada parte desse curso, assim se manterá organizado e terá seus exemplos armazenados de forma cronológica. Caso você precise de alguma dica em HTML/CSS recomendo o blog do <a title="Rafael Fagundes" href="http://www.rafaelfagundes.com/blog" target="_blank">Rafael Fagundes</a> em especial o início do <a title="Rafael Fagundes - Tutorial HTML e CSS - Parte 1" href="http://www.rafaelfagundes.com/blog/?p=12" target="_blank">tutorial </a>dele.</p>
<p>Os arquivos de script PHP são todos do tipo texto puro, por isso, você pode programar até no Bloco de Notas se preferir, mas para utilizar toda a agilidade de desenvolvimento que o PHP proporciona, é aconselhavel utilizar algumas dessas opções de IDE:</p>
<ul>
<li><strong>PHPEclipse</strong> -<a title="http://www.phpeclipse.de/" href="http://www.phpeclipse.de/" target="_blank"> http://www.phpeclipse.de/</a></li>
<li><strong>PDT</strong> &#8211; <a title="http://www.eclipse.org/pdt/" href="http://www.eclipse.org/pdt/" target="_blank">http://www.eclipse.org/pdt/</a></li>
<li><strong>Zend Studio</strong> (<em>trial</em>) &#8211; <a title="http://www.zend.com/en/downloads/" href="http://www.zend.com/en/downloads/" target="_blank">http://www.zend.com/en/downloads/</a></li>
<li><strong>NetBeans -</strong> <a title="http://www.netbeans.org/features/php/" href="http://www.netbeans.org/features/php/" target="_blank">http://www.netbeans.org/features/php/</a></li>
</ul>
<p>Com sua IDE preferida corretamente instalada, você já pode dar inicio a sua aprendizagem real do PHP.</p>
<h2>Primeiros Passos</h2>
<p>Qualquer aplicação que você desenvolver, só irá ser interpretada pelo php se você utilizar a extensão do arquivo examente igual as que você configurou em seu apache. Dentro do seu arquivo é obrigatório que você adicione seus códigos dentro das tags php. São elas:</p>
<p>Para inciciar o bloco de comandos</p>
<pre class="brush: php">
&lt;?php
</pre>
<p>Para finalizar o bloco de comandos:</p>
<pre class="brush: php">
?&gt;
</pre>
<p>Ex.: Crie um arquivo chamado <em>primeiro_passo_1.php</em> dentro do diretório que você publica suas páginas do apache (htdocs geralmente) e insira as seguintes linhas de código.</p>
<pre class="brush: php">
&lt;?php
echo &quot;Meu primeiro script PHP&quot;;
?&gt;
</pre>
<p>Agora vamos analizar esse pequeno código.</p>
<p><strong>Linha 1</strong>: Ela irá dar inicio ao bloco de código, tudo que estiver abaixo dela será interpretado pelo PHP.</p>
<p><strong>Linha 2</strong>: &#8220;echo&#8221; é um método do PHP que serve para imprimir uma string na saída padrão do script. Já se acostume com ele, pois você dependerá muito dele em seu aprendizado</p>
<p><strong>Linha 2</strong>: Perceba que ao final da linha dois existe um &#8220;;&#8221; (ponto-e-vírgula). Ele é usado para separar comandos em PHP. Ao término de cada instrução você deve obrigatóriamente terminar com o &#8216;;&#8217; senão o interpretador irá exibir um erro de Parser. (você aprenderá mais sobre os erros nos próximos módulos)</p>
<p><strong>Linha 3</strong>: É essa tag a responsável pelo fim do bloco de códigos PHP. Apartir daqui o PHP não executará mais nada.</p>
<p>Chame esse script pelo seu navegador, utilizando a url que você viu na lição passada e veja o resultado.</p>
<p>Mais um exemplo, mas agora abrindo dois blocos de script no mesmo arquivo:</p>
<pre class="brush: php">

&lt;strong&gt;O meu nome é?&lt;/strong&gt;

&lt;?php
echo &quot;Nivaldo&quot;;
?&gt;

&lt;strong&gt;Qual módulo estou estudando?&lt;/strong&gt;

&lt;?php
echo &quot;Basico - INICIANDO EM PHP&quot;;
?&gt;
</pre>
<p>Com esse exemplo fica claro que o código que será interpretado pelo PHP é apenas o que consta dentro das tags &#8220;&lt;?php&#8221; e &#8220;?&gt;&#8221;. Você pode utilizar quantos blocos de código quiser. Nos próximos módulos serão apresentados mais comandos de saída e de string, mas, caso queira brincar um pouco mais com esse script, recomendo que vá alterando o texto passado para o echo e experimente informar algumas tags html junto a ele para testar como o script se comportará no navegador.</p>
</div>

<br/><br/><p><strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2010/01/23/curso-de-php-modulo-basico-estrutura-de-controle-parte-5/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Controle &#8211; Parte 5'>Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Controle &#8211; Parte 5</a> <small>Curso de PHP &#8211; Estrutura de controles Durante o desenvolvimento...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2010/03/21/curso-de-php-modulo-basico-estrutura-de-repeticao-parte-6/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Repetição &#8211; Parte 6'>Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Repetição &#8211; Parte 6</a> <small>Dando continuidade ao meu Curso de PHP, vamos falar a...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-parte-1/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Parte 1'>Curso de PHP &#8211; Módulo Básico &#8211; Parte 1</a> <small>Nos ultimos tempos, o número de visitantes que estão caindo...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-iniciando-em-php-parte-3/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Curso de PHP &#8211; Instalação do PHP 5 (Windows) &#8211; Parte 2</title>
		<link>http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-instalacao-do-php-5-windows-parte-2/</link>
		<comments>http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-instalacao-do-php-5-windows-parte-2/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 01:18:40 +0000</pubDate>
		<dc:creator>Nivaldo Arruda</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Treinamento]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[apostila]]></category>
		<category><![CDATA[curso]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.nivaldoarruda.com.br/?p=523</guid>
		<description><![CDATA[Instalação do PHP 5 (Windows) Nesse capítulo vamos ver como instalar o PHP 5 no windows, levando em consideração, que você já possui o apache 2.2.* instalado (http://httpd.apache.org/) Obtendo o PHP O primeiro passo da instalação é obter a sua última versão direto no site oficial do PHP (http://www.php.net/downloads.php). No momento em que esse manual [...]

<br/><br/>
<strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-iniciando-em-php-parte-3/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Iniciando em PHP &#8211; Parte 3'>Curso de PHP &#8211; Módulo Básico &#8211; Iniciando em PHP &#8211; Parte 3</a> <small>Iniciando em PHP A partir de agora, iremos supor que...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-parte-1/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Parte 1'>Curso de PHP &#8211; Módulo Básico &#8211; Parte 1</a> <small>Nos ultimos tempos, o número de visitantes que estão caindo...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-variaveis-e-constantes-parte-4/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Variáveis e Constantes &#8211; Parte 4'>Curso de PHP &#8211; Módulo Básico &#8211; Variáveis e Constantes &#8211; Parte 4</a> <small>Variáveis Variáveis são endereços de memória que contém valores que...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><p><center><script type="text/javascript"><!--
google_ad_client = "pub-6037690795851697";
/* Banner gráfico, 468x60, criado 19/02/09 */
google_ad_slot = "2783505197";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></center></p>
<h1>Instalação do PHP 5 (Windows)</h1>
<p>Nesse capítulo vamos ver como instalar o PHP 5 no windows, levando em consideração, que você já possui o apache 2.2.* instalado (http://httpd.apache.org/)</p>
<h2>Obtendo o PHP</h2>
<p>O primeiro passo da instalação é obter a sua última versão direto no site oficial do PHP (http://www.php.net/downloads.php). No momento em que esse manual foi escrito a ultima versão estável era a 5.3.1. Ná página de downloads, procure pelo link &#8220;PHP 5.3.1 zip package&#8221; e baixe o arquivo.</p>
<h2>Instalando</h2>
<p>Para essa versão da instalação o nome do arquivo é: php-5.3.1-Win32.zip, descompacte-o na pasta de sua preferência, sempre lembrando que essa pasta será aonde o PHP será instalado. É recomendado criar uma pasta apenas para o PHP, ex.: C:\php\ (esse será o caminha utilizado no restante do documento, caso você prefira fazer a instalação em outro local, fique atento para manter sempre o mesmo caminho nos outros passos desse capítulo.</p>
<p>Entre na pasta que você instalou o PHP e renomeie o arquivo c:\php\php.ini-dist para c:\php\php.ini</p>
<h2>Configurando o php.ini</h2>
<p>Abra o php.ini em algum editor de texto de sua preferência e procure pela entrada: doc_root. Então, você deve alterá-la para o local aonde o DocumentRoot do Apache está indicado. No caso desse curso fica assim:</p>
<p>doc_root = &#8220;d:\sites&#8221;</p>
<p>Desça um pouco mais no arquivo e procure a entrada: extension_dir. Então, você deve trocar o seu valor pelo caminho das extenções, no diretório que você instalou o PHP. No exemplo desse curso ficaria:</p>
<p>extension_dir = &#8220;c:\php\ext&#8221;</p>
<p>Opcionalmente, você pode alterar a entrada: error_reporting, para:</p>
<p>error_reporting = E_ALL | E_NOTICE | E_STRICT</p>
<p>Com essa modificação o PHP irá mostrar na tela uma mensagem com qualquer erro, notice ou problemas de codifcação que existir. Recomendo habilitar essa opção apenas no seu servidor de teste/desenvolvimento.</p>
<h2>Configurando o Apache</h2>
<p>Usando o editor de sua preferência, abra o arquivo “c:\Apache2\conf\httpd.conf” (levando em conta que o Apache está instalado nesse diretório) e adicione no final do arquivo as seguintes linhas:</p>
<p>LoadModule php5_module &#8220;c:/php/php5apache2_2.dll&#8221;</p>
<p>AddType application/x-httpd-php .php</p>
<p>PHPIniDir &#8220;c:/php&#8221;</p>
<p>Esteja sempre atento em substituir os caminhos do PHP para o local aonde você realizou a sua instalação.</p>
<p>Para que o apache procure primeiro pelo index.php em um diretório, adicione as seguintes linhas (caso esse bloco de instruções já exista, você só precisa aterar ele) .</p>
<p>&lt;IfModule dir_module&gt;</p>
<p>DirectoryIndex index.php index.html default.html</p>
<p>&lt;/IfModule&gt;</p>
<h2>Finalizando</h2>
<p>Com todos os arquivos devidamente alterados, é hora de testar sua configuração.  Para isso, reinicie o seu servidor Apache e verifique se ocorreu algum erro. Para testar seu PHP crie um arquivo simples na pasta “DocumentRoot” que você configurou no Apache (&#8220;d:\sites&#8221; em nosso exemplo) e adicione as seguintes linhas:</p>
<p>info.php</p>
<p>&lt;?php</p>
<p>phpinfo();</p>
<p>?&gt;</p>
<p>Chame esse arquivo pelo seu navegador preferido, utilizando a seguinte URL:</p>
<p><a href="http://localhost/info.php">http://localhost/info.php</a></p>
<p>O navegador irá exibir todo o conjuto de informações a repeito do PHP que está instalado em seu servidor.</p>
</div>

<br/><br/><p><strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-iniciando-em-php-parte-3/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Iniciando em PHP &#8211; Parte 3'>Curso de PHP &#8211; Módulo Básico &#8211; Iniciando em PHP &#8211; Parte 3</a> <small>Iniciando em PHP A partir de agora, iremos supor que...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-parte-1/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Parte 1'>Curso de PHP &#8211; Módulo Básico &#8211; Parte 1</a> <small>Nos ultimos tempos, o número de visitantes que estão caindo...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-variaveis-e-constantes-parte-4/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Variáveis e Constantes &#8211; Parte 4'>Curso de PHP &#8211; Módulo Básico &#8211; Variáveis e Constantes &#8211; Parte 4</a> <small>Variáveis Variáveis são endereços de memória que contém valores que...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-instalacao-do-php-5-windows-parte-2/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Curso de PHP &#8211; Módulo Básico &#8211; Parte 1</title>
		<link>http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-parte-1/</link>
		<comments>http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-parte-1/#comments</comments>
		<pubDate>Sun, 13 Dec 2009 01:12:57 +0000</pubDate>
		<dc:creator>Nivaldo Arruda</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Treinamento]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[curso]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.nivaldoarruda.com.br/?p=521</guid>
		<description><![CDATA[Nos ultimos tempos, o número de visitantes que estão caindo no meu site em busca de apostilas, tutorial, treinamento ou cursos relacionados a PHP tem aumentado drasticamente.  Como eu não gostaria de perder esses visitantes, e pensando mais alto, gostaria de abrir os olhos deles para o Zend Framework, resolvi começar a postar artigos a [...]

<br/><br/>
<strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-iniciando-em-php-parte-3/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Iniciando em PHP &#8211; Parte 3'>Curso de PHP &#8211; Módulo Básico &#8211; Iniciando em PHP &#8211; Parte 3</a> <small>Iniciando em PHP A partir de agora, iremos supor que...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2010/01/23/curso-de-php-modulo-basico-estrutura-de-controle-parte-5/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Controle &#8211; Parte 5'>Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Controle &#8211; Parte 5</a> <small>Curso de PHP &#8211; Estrutura de controles Durante o desenvolvimento...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-variaveis-e-constantes-parte-4/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Variáveis e Constantes &#8211; Parte 4'>Curso de PHP &#8211; Módulo Básico &#8211; Variáveis e Constantes &#8211; Parte 4</a> <small>Variáveis Variáveis são endereços de memória que contém valores que...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><p><center><script type="text/javascript"><!--
google_ad_client = "pub-6037690795851697";
/* Banner gráfico, 468x60, criado 19/02/09 */
google_ad_slot = "2783505197";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></center><br />
Nos ultimos tempos, o número de visitantes que estão caindo no meu site em busca de apostilas, tutorial, treinamento ou cursos relacionados a PHP tem aumentado drasticamente.  Como eu não gostaria de perder esses visitantes, e pensando mais alto, gostaria de abrir os olhos deles para o Zend Framework, resolvi começar a postar artigos a respeito do PHP.</p>
<p>Essa primeira parte, vai servir para iniciar você no PHP. Aguardo suas sugestões, criticas e suas recomendações (caso conheça alguém que esteja iniciando no PHP, sugira esse artigo). Agora, vamos ao que interessa!</p>
<h1>Histórico</h1>
<p>A linguagem surgiu por volta de 1994, como um pacote de programas CGI criados por Rasmus Lerdof, com o nome Personal Home Page Tools, para substituir um conjunto de scripts Perl que ele usava no desenvolvimento de sua página pessoal. Em 1997 foi lançado o novo pacote da linguagem com o nome de PHP/FI, trazendo a ferramenta Forms Interpreter, um interpretador de comandos SQL.</p>
<p>Mais tarde, Zeev Suraski desenvolveu o analisador do PHP 3 que contava com o primeiro recurso de orientação a objetos, que dava poder de alcançar alguns pacotes, tinha herança e dava aos desenvolvedores somente a possibilidade de implementar propriedades e métodos.</p>
<p>Pouco depois, Zeev e Andi Gutmans, escreveram o PHP 4, abandonando por completo o PHP 3, dando mais poder à máquina da linguagem e maior número de recursos de orientação a objetos. O problema sério que apresentou o PHP 4 foi a criação de cópias de objetos, pois a linguagem ainda não trabalhava com apontadores ou handlers, como é a linguagem Java.</p>
<p>O problema fora resolvido na versão atual do PHP, a versão 5, que já trabalha com handlers. Caso se copie um objeto, na verdade copiaremos um apontador, pois, caso haja alguma mudança na versão original do objeto, todas as outras também sofrem a alteração, o que não acontecia na PHP 4.</p>
<h1>O que é o PHP?</h1>
<p>PHP, é um acrônimo que significa &#8220;PHP: Hypertext Preprocessor&#8221;, é uma linguagem de programação “server-side”, interpretada, que foi especialmente desenvolvida para a internet e pode ser embutida dentro do código HTML. A sintaxe da linguagem lembra C e Perl,  é fácil de aprender e tem um mercado muito grande tanto dentro quanto fora do Brasil. O objetivo principal da linguagem é permitir a desenvolvedores escreverem páginas dinâmicas  rapidamente, mas o PHP permite que você faça muito mais do que isso com ele, principalmente depois de lançada a versão 5 , que foi inteiramente reformulada para trabalhar com orientação a objetos.</p>
<p>Ser “server-side”, significa que o PHP é executado no servidor. Mesmo mesclando o php com código HTML, quando algum usuário fizer uma requisição à página, o servidor iá executar todo o código PHP que existir para só depois enviar o resultado para o navegador do usuário. Isso significa que seus códigos ficarão seguros dentro do servido e o visitante não conseguirá visualizar eles. Você pode inclusive configurar seu servidor para processar todos os seus arquivos HTML como PHP, e então não haverá nenhum modo dos usuários descobrirem que se você usa essa linguagem ou não. Outra vantagem nesse tipo de linguagem é que o cliente não precisa fazer procesamento algum, o servidor se encarrega de tudo.</p>
<p>Por ser multiplataforma, ela roda nos mais diversos sistemas operacionais. Windows, Linux, Mac OS, *BSD etc). PHP é uma linguagem livre e de código fonte aberto. Para saber mais sobre ela, acesse o site oficial:</p>
<p><a href="http://www.php.net/">http://www.php.net</a></p>
<h1>Características</h1>
<ul>
<li>Velocidade e robustez</li>
<li>Velocidade de desenvolvimento</li>
<li>Facilidade de aprendizagem</li>
<li>Estruturado e/ou orientado a objeto</li>
<li>Portabilidade &#8211; independência de plataforma &#8211; escreva uma vez, rode em qualquer lugar</li>
<li>Muito bem difundida</li>
<li>Tipagem fraca</li>
<li>Sintaxe similar a Linguagem C/C++ e o PERL</li>
</ul>
<h1>Referências</h1>
<ul>
<li><a href="http://www.php.net/">http://www.php.net</a></li>
<li><a href="http://pt.wikipedia.org/wiki/PHP">http://pt.wikipedia.org/wiki/PHP</a></li>
</ul>
</div>

<br/><br/><p><strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-iniciando-em-php-parte-3/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Iniciando em PHP &#8211; Parte 3'>Curso de PHP &#8211; Módulo Básico &#8211; Iniciando em PHP &#8211; Parte 3</a> <small>Iniciando em PHP A partir de agora, iremos supor que...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2010/01/23/curso-de-php-modulo-basico-estrutura-de-controle-parte-5/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Controle &#8211; Parte 5'>Curso de PHP &#8211; Módulo Básico &#8211; Estrutura de Controle &#8211; Parte 5</a> <small>Curso de PHP &#8211; Estrutura de controles Durante o desenvolvimento...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-variaveis-e-constantes-parte-4/' rel='bookmark' title='Permanent Link: Curso de PHP &#8211; Módulo Básico &#8211; Variáveis e Constantes &#8211; Parte 4'>Curso de PHP &#8211; Módulo Básico &#8211; Variáveis e Constantes &#8211; Parte 4</a> <small>Variáveis Variáveis são endereços de memória que contém valores que...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.nivaldoarruda.com.br/2009/12/12/curso-de-php-modulo-basico-parte-1/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Dica rápida &#8211; Postgres SQL &#8211; Funções úteis</title>
		<link>http://www.nivaldoarruda.com.br/2009/12/08/dica-rapida-postgres-sql-funcoes-uteis/</link>
		<comments>http://www.nivaldoarruda.com.br/2009/12/08/dica-rapida-postgres-sql-funcoes-uteis/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 15:25:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PostgreSQL]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[curso]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Treinamento]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.nivaldoarruda.com.br/?p=516</guid>
		<description><![CDATA[Não, o blog não morreu! Só está meio largado para as traças devido a correria de fim de ano. Pretendo começar a testar algumas coisas novas, então em breve postarei alguns lançamentos e meus resultados aqui para vocês. Quem quiser sugerir algo, pode fazer no formulário que contato que tem na página &#8220;Sobre&#8221; Bom, vamos [...]

<br/><br/>
<strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2010/01/18/dica-php-5-3-apache-2-postgres-e-zend-framework-no-windows-seven/' rel='bookmark' title='Permanent Link: Dica &#8211; PHP 5.3, Apache 2, Postgres e Zend Framework no Windows Seven'>Dica &#8211; PHP 5.3, Apache 2, Postgres e Zend Framework no Windows Seven</a> <small>Estou com a versão de testes do Windows Seven (Home...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/03/22/dica-rapida-decorators/' rel='bookmark' title='Permanent Link: Dica Rápida: Decorators'>Dica Rápida: Decorators</a> <small>Aceitando a sugestão do XAngel irei providenciar um artigo bem...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/06/15/dica-rapida-rotas/' rel='bookmark' title='Permanent Link: Dica Rápida: Rotas'>Dica Rápida: Rotas</a> <small>Você ja deve ter percebido que o padrão de url...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><p>Não, o blog não morreu! Só está meio largado para as traças devido a correria de fim de ano. Pretendo começar a testar algumas coisas novas, então em breve postarei alguns lançamentos e meus resultados aqui para vocês. Quem quiser sugerir algo, pode fazer no formulário que contato que tem na página  &#8220;<a href="http://www.nivaldoarruda.com.br/about/">Sobre</a>&#8221; <img src='http://www.nivaldoarruda.com.br/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Bom, vamos as dicas!</p>
<p><strong>Somar 10 dias a partir da data atual:</strong></p>
<pre class="brush: sql">
SELECT current_date + 10
</pre>
<p><strong>md5 no postgres:</strong><br />
Sim! Postgres tem suporte nativo a md5. Transformar uma string em md5</p>
<pre class="brush: sql">
SELECT md5(&#039;lalalala&#039;)
</pre>
<p>Transformar uma coluna em md5</p>
<pre class="brush: sql">
SELECT md5(nome) from pessoas
</pre>
<p><strong>Como é proncuniado o nome: PostgreSQL?</strong><br />
PostgreSQL é pronunciado Post-Gres-Q-L. <a href="http://www.postgresql.org/files/postgresql.mp3">[Escutar]</a></p>
</div>

<br/><br/><p><strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2010/01/18/dica-php-5-3-apache-2-postgres-e-zend-framework-no-windows-seven/' rel='bookmark' title='Permanent Link: Dica &#8211; PHP 5.3, Apache 2, Postgres e Zend Framework no Windows Seven'>Dica &#8211; PHP 5.3, Apache 2, Postgres e Zend Framework no Windows Seven</a> <small>Estou com a versão de testes do Windows Seven (Home...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/03/22/dica-rapida-decorators/' rel='bookmark' title='Permanent Link: Dica Rápida: Decorators'>Dica Rápida: Decorators</a> <small>Aceitando a sugestão do XAngel irei providenciar um artigo bem...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/06/15/dica-rapida-rotas/' rel='bookmark' title='Permanent Link: Dica Rápida: Rotas'>Dica Rápida: Rotas</a> <small>Você ja deve ter percebido que o padrão de url...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.nivaldoarruda.com.br/2009/12/08/dica-rapida-postgres-sql-funcoes-uteis/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://www.postgresql.org/files/postgresql.mp3" length="5747" type="audio/mpeg" />
		</item>
		<item>
		<title>Zend Framework &#8211; Tutorial &#8211; Personalizando os decorators</title>
		<link>http://www.nivaldoarruda.com.br/2009/09/07/zend-framework-tutorial-personalizando-os-decorators/</link>
		<comments>http://www.nivaldoarruda.com.br/2009/09/07/zend-framework-tutorial-personalizando-os-decorators/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 13:55:54 +0000</pubDate>
		<dc:creator>Nivaldo Arruda</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[decorators]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[Treinamento]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[Zend_Form]]></category>
		<category><![CDATA[zend_form_decorator]]></category>
		<category><![CDATA[ZF]]></category>

		<guid isPermaLink="false">http://www.nivaldoarruda.com.br/?p=503</guid>
		<description><![CDATA[php, zend, hospedagem, ajax, programação, tutorial, curso, apostila, site, criar site, html Continuando o tutorial sobre decorators, vou abordar agora como personalizar as tags entre os campos. Como todo mundo deve estar cansado de saber, por padrão o ZF cria o formulário HTML dentro das tags DL/DT/DD. As vezes é conveniente para o layout que [...]

<br/><br/>
<strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2009/05/06/desvendando-os-decorators-zend_form_decorator-parte-1/' rel='bookmark' title='Permanent Link: Desvendando os Decorators (Zend_form_decorator) &#8211; Parte 1'>Desvendando os Decorators (Zend_form_decorator) &#8211; Parte 1</a> <small>Como sempre tive (e ainda tenho) problemas com os decorators,...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/08/11/zend-framework-criando-um-view-helper/' rel='bookmark' title='Permanent Link: Zend Framework &#8211; Criando um View helper'>Zend Framework &#8211; Criando um View helper</a> <small>O blog está um pouco parado, então irei reanima-lo um...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/08/26/zend-framework-criando-action-helpers/' rel='bookmark' title='Permanent Link: Zend Framework &#8211; Criando Action Helpers'>Zend Framework &#8211; Criando Action Helpers</a> <small>Conforme eu havia prometido aqui, hoje eu estarei dando continuidade...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><p><span style="display: none">php, zend, hospedagem, ajax, programação, tutorial, curso, apostila, site, criar site, html</span><br />
Continuando o <a title="Desvendando os Decorators " href="http://www.nivaldoarruda.com.br/2009/05/06/desvendando-os-decorators-zend_form_decorator-parte-1/" target="_blank">tutorial</a> sobre decorators, vou abordar agora como personalizar as tags entre os campos. Como todo mundo deve estar cansado de saber, por padrão o ZF cria o formulário HTML dentro das tags DL/DT/DD. As vezes é conveniente para o layout que os campos fiquem entre DIVs e os rótulos entre as tags LABEL.</p>
<p>Nesse tutorial, além de resolver o problema das tags vamos criar uma feature a mais. Todos os campos que forem requeridos (setRequired(true)), irão receber automáticamente um &#8220;*&#8221; no seu rótulo.<br/><br />
<br/><br />
<strong>Escrevendo o decorator</strong></p>
<pre class="brush: php">
&lt;?php
class Decorators_Composite extends Zend_Form_Decorator_Abstract implements Zend_Form_Decorator_Marker_File_Interface
{
    public function buildLabel()
    {
        $element = $this-&gt;getElement();
        $label = $element-&gt;getLabel();
        if ($translator = $element-&gt;getTranslator()) {
            $label = $translator-&gt;translate($label);
        }

        /* Se o elemento for requerido, será adicionado um &quot;*&quot; após o seu nome */
        if ($element-&gt;isRequired()) {
            $label .= &#039;*&#039;;
        }
        $label .= &#039;:&#039;;
        return $element-&gt;getView()
                       -&gt;formLabel($element-&gt;getName(), $label);
    }

    public function buildInput()
    {
        $element = $this-&gt;getElement();
        $helper  = $element-&gt;helper;
        return $element-&gt;getView()-&gt;$helper(
            $element-&gt;getName(),
            $element-&gt;getValue(),
            $element-&gt;getAttribs(),
            $element-&gt;options
        );
    }

    public function buildErrors()
    {
        $element  = $this-&gt;getElement();
        $messages = $element-&gt;getMessages();
        if (empty($messages)) {
            return &#039;&#039;;
        }
        return &#039;
&lt;div class=&quot;errors&quot;&gt;&#039; .
               $element-&gt;getView()-&gt;formErrors($messages) . &#039;&lt;/div&gt;
&#039;;
    }

    public function buildDescription()
    {
        $element = $this-&gt;getElement();
        $desc    = $element-&gt;getDescription();
        if (empty($desc)) {
            return &#039;&#039;;
        }
        return &#039;
&lt;div class=&quot;description&quot;&gt;&#039; . $desc . &#039;&lt;/div&gt;
&#039;;
    }

    public function render($content)
    {
        $element = $this-&gt;getElement();
        if (!$element instanceof Zend_Form_Element) {
            return $content;
        }
        if (null === $element-&gt;getView()) {
            return $content;
        }

        /* Gera todos os códigos */
        $separator = $this-&gt;getSeparator();
        $placement = $this-&gt;getPlacement();
        $label     = $this-&gt;buildLabel();
        $input     = $this-&gt;buildInput();
        $errors    = $this-&gt;buildErrors();
        $desc      = $this-&gt;buildDescription();

        /* Cria o elemento usando div */
        $output = &#039;
&lt;div class=&quot;form element&quot;&gt;&#039;
                . $label
                . $input
                . $errors
                . $desc
                . &#039;&lt;/div&gt;
&#039;;

        switch ($placement) {
            case (self::PREPEND):
                return $output . $separator . $content;
            case (self::APPEND):
            default:
                return $content . $separator . $output;
        }
    }
}
?&gt;
</pre>
<p>Salve esse arquivo dentro de library/Decorators/Composite.php<br/><br />
<br/><br />
<strong>Utilizando o decorator personalizado<br />
</strong></p>
<p>No form que você desejar, adicione esses 2 blocos de códigos em php:<br />
<span style="display: none">php, zend, hospedagem, ajax, programação, tutorial, curso, apostila, site, criar site, html</span><br />
<script type="text/javascript"><!--
google_ad_client = "pub-6037690795851697";
/* 468x15, NA-meiopost */
google_ad_slot = "4228667083";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br />
<br/><br />
<em>No começo da classe</em>(inclui o decorator):</p>
<pre class="brush: php">
$this-&gt;addElementPrefixPath(&#039;Decorators&#039;, &#039;Decorators/&#039;, &#039;decorator&#039;);
</pre>
<p><em>Esse vai bem no final da classe</em>(Ativa o decorator):</p>
<pre class="brush: php">
$this-&gt;setElementDecorators(array(&#039;Composite&#039;));
</pre>
<p>É isso, aos poucos vamos desvendando por completo os decorators, que tem material até para fazer uma apostila. hehe.</p>
<p>^^<code></code></p>
</div>

<br/><br/><p><strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2009/05/06/desvendando-os-decorators-zend_form_decorator-parte-1/' rel='bookmark' title='Permanent Link: Desvendando os Decorators (Zend_form_decorator) &#8211; Parte 1'>Desvendando os Decorators (Zend_form_decorator) &#8211; Parte 1</a> <small>Como sempre tive (e ainda tenho) problemas com os decorators,...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/08/11/zend-framework-criando-um-view-helper/' rel='bookmark' title='Permanent Link: Zend Framework &#8211; Criando um View helper'>Zend Framework &#8211; Criando um View helper</a> <small>O blog está um pouco parado, então irei reanima-lo um...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/08/26/zend-framework-criando-action-helpers/' rel='bookmark' title='Permanent Link: Zend Framework &#8211; Criando Action Helpers'>Zend Framework &#8211; Criando Action Helpers</a> <small>Conforme eu havia prometido aqui, hoje eu estarei dando continuidade...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.nivaldoarruda.com.br/2009/09/07/zend-framework-tutorial-personalizando-os-decorators/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>Zend Framework &#8211; Criando Action Helpers</title>
		<link>http://www.nivaldoarruda.com.br/2009/08/26/zend-framework-criando-action-helpers/</link>
		<comments>http://www.nivaldoarruda.com.br/2009/08/26/zend-framework-criando-action-helpers/#comments</comments>
		<pubDate>Wed, 26 Aug 2009 11:58:52 +0000</pubDate>
		<dc:creator>Nivaldo Arruda</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[Action Helper]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[Treinamento]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[Zend Framework]]></category>
		<category><![CDATA[ZF]]></category>

		<guid isPermaLink="false">http://www.nivaldoarruda.com.br/?p=488</guid>
		<description><![CDATA[Conforme eu havia prometido aqui, hoje eu estarei dando continuidade aos meus tutoriais sobre helpers. O action helper, assim como view helper, serve para melhorar o reaproveitamento de códigos e manter seus controllers o mais limpo possível. Na empresa aonde trabalho, o primeiro problema que apareceu no uso do ZF foi a criação constante de [...]

<br/><br/>
<strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2009/08/11/zend-framework-criando-um-view-helper/' rel='bookmark' title='Permanent Link: Zend Framework &#8211; Criando um View helper'>Zend Framework &#8211; Criando um View helper</a> <small>O blog está um pouco parado, então irei reanima-lo um...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/09/07/zend-framework-tutorial-personalizando-os-decorators/' rel='bookmark' title='Permanent Link: Zend Framework &#8211; Tutorial &#8211; Personalizando os decorators'>Zend Framework &#8211; Tutorial &#8211; Personalizando os decorators</a> <small>php, zend, hospedagem, ajax, programação, tutorial, curso, apostila, site, criar...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/05/04/zend-framework-180/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.0'>Zend Framework 1.8.0</a> <small>Só para não passar em branco. No ultimo dia 30...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<div id=HOTWordsTxt name=HOTWordsTxt><p>Conforme eu havia prometido <a title="Zend Framework - Criando um View Helper" href="http://www.nivaldoarruda.com.br/2009/08/11/zend-framework-criando-um-view-helper/" target="_blank">aqui</a>, hoje eu estarei dando continuidade aos meus tutoriais sobre helpers. O action helper, assim como view helper, serve para melhorar o reaproveitamento de códigos e manter seus controllers o mais limpo possível.</p>
<p>Na empresa aonde trabalho, o primeiro problema que apareceu no uso do ZF foi a criação constante de formulários. Esse processo nos forçava a criar vários &#8220;<em>getForms</em>&#8220;, muitos deles com o mesmo código. Vamos generalizar esse tipo de código, criar um helper e ser mais feliz!<br />
<br/><br />
<strong>Configurando</strong></p>
<p>Mais uma vez, estarei levando em consideração que você está utilizando o padrão MVC com plugins do ZF (padrão que o zend studio cria). Já recebi vários emails do tipo &#8220;Como configurar o ZendFramework&#8221; ou então &#8220;Como criar a primeira aplicação com o ZF&#8221;. Prometo postar algo sobre isso em breve. Vamos lá:</p>
<p>Adicione a seguinte linha no seu plugin &#8220;Initializer.php&#8221; (ou em seu bootstrap, caso esteja configurado de outra forma)</p>
<pre class="brush: php">
Zend_Controller_Action_HelperBroker::addPath($CAMINHO_FISICO . &#039;/library/helpers/&#039;, &#039;Zend_Controller_Action_Helper&#039;);
</pre>
<p>Tenha em mente que a váriavel $CAMINHO_FISICO deve conter o caminho da sua aplicação no servidor.</p>
<p>Com essa linha configurada corretamente o ZF já vai conseguir &#8220;enxergar&#8221; o seu helper.<br />
<br/><br />
<strong>Criando o Action Helper</strong></p>
<pre class="brush: php">
&lt;?php
/**
* Cria o objeto do form indicado.
* @author Nivaldo Arruda - nivaldo@gmail.com
* @version 1.0
*/

class Zend_Controller_Action_Helper_Formulario extends Zend_Controller_Action_Helper_Abstract
{

/**
* instancia o formulario.
* Exemplo para o parametro: $opcoes
* $opcoes[&#039;id&#039;] = Para salvar uma edição de dados
* $opcoes[&#039;url&#039;] = url da action
*
* @param string $formulario
* @param Array $opcoes
* @return Object
*/
public function criar($formulario, array $opcoes=null)
{
//Caso o seu autoload esteja habilitado, essa linha pode ser comentada
require_once $formulario.&#039;.php&#039;;

$id = $opcoes[&#039;id&#039;];

/**
* Gera o parametro &quot;id&quot; caso o mesmo seja informado (para URL de editar);
*/
if($id)
$id = &quot;/id/&quot;.$id;

/**
* Instancia o formulario informado
*/
$form = new $formulario(array(
&#039;action&#039; =&gt; $opcoes[&#039;url&#039;].$id,
&#039;method&#039; =&gt; &#039;post&#039;,
&#039;id&#039; =&gt; $formulario,
), $opcoes);

return $form;
}

}
</pre>
<p>Perceberam que é uma classe bastante simples não? Mas para um sistema comum, com muitos cadastros, ela é essencial e vai te economizar bastante linhas de códigos =)<br />
<br/><br />
<strong>Utilizando</strong><br />
Para chamar essa classe é simples. Adicione a seguinte linha no seu controller:</p>
<pre class="brush: php">
$opcoes[&#039;url&#039;] = &#039;/usuarios/salvar&#039;;
$form = $this-&gt;_helper-&gt;Formulario-&gt;criar(&#039;usuarioForm&#039;, $opcoes);
</pre>
<p>Esse código irá instanciar um objeto do tipo &#8220;usuarioForm&#8221; dentro da váriavel $form. Só lembre-se que o nome da classe do seu form deve ser &#8220;usuarioForm&#8221; e o arquivo dela: usuarioForm.php.<br />
<br/><br />
Código bem simples, para exemplificar os actions helpers, que serão um grande aliado seu do dia a dia.<br />
<br/><br />
^^</p>
</div>

<br/><br/><p><strong>Posts relacionados:</strong><ol><li><a href='http://www.nivaldoarruda.com.br/2009/08/11/zend-framework-criando-um-view-helper/' rel='bookmark' title='Permanent Link: Zend Framework &#8211; Criando um View helper'>Zend Framework &#8211; Criando um View helper</a> <small>O blog está um pouco parado, então irei reanima-lo um...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/09/07/zend-framework-tutorial-personalizando-os-decorators/' rel='bookmark' title='Permanent Link: Zend Framework &#8211; Tutorial &#8211; Personalizando os decorators'>Zend Framework &#8211; Tutorial &#8211; Personalizando os decorators</a> <small>php, zend, hospedagem, ajax, programação, tutorial, curso, apostila, site, criar...</small></li>
<li><a href='http://www.nivaldoarruda.com.br/2009/05/04/zend-framework-180/' rel='bookmark' title='Permanent Link: Zend Framework 1.8.0'>Zend Framework 1.8.0</a> <small>Só para não passar em branco. No ultimo dia 30...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.nivaldoarruda.com.br/2009/08/26/zend-framework-criando-action-helpers/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
