+5

Introdução ao PHP

criado por João Prado Maia em 25/01/2001 6:32pm
<p class=\"negrito\">11. Vari&aacute;veis e Constantes</p>
<p align=\"JUSTIFY\">&nbsp;</p>
<p align=\"JUSTIFY\">Declara&ccedil;&atilde;o de uma vari&aacute;vel</p>
<p align=\"JUSTIFY\">Como a tipagem em PHP &eacute; din&acirc;mica,
as vari&aacute;veis n&atilde;o precisam ser declaradas. Uma vari&aacute;vel
&eacute; inicializada no momento em que &eacute; feita a primeira
atribui&ccedil;&atilde;o. O tipo da vari&aacute;vel ser&aacute;
definido de acordo com o valor atribu&iacute;do.</p>
<p align=\"JUSTIFY\">O modificador static</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Uma vari&aacute;vel est&aacute;tica &eacute; vis&iacute;vel
num escopo local, mas ela &eacute; inicializada apenas uma vez e
seu valor n&atilde;o &eacute; perdido quando a execu&ccedil;&atilde;o
do script deixa esse escopo. Veja o seguinte exemplo:</p>
<p align=\"JUSTIFY\"></p>
<span class=\"mysql\">&lt;?php<br>
function Teste() {<br>
&nbsp;&nbsp;$a = 0;<br>
&nbsp;&nbsp;echo $a;<br>
&nbsp;&nbsp;$a++;<br>
}<br>
?&gt; </span><font face=\"Courier New\" size=\"3\"><br>
</font>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O &uacute;ltimo comando da fun&ccedil;&atilde;o
&eacute; in&uacute;til, pois assim que for encerrada a execu&ccedil;&atilde;o
da fun&ccedil;&atilde;o a vari&aacute;vel $a perde seu valor. J&aacute;
no exemplo seguinte, a cada chamada da fun&ccedil;&atilde;o a vari&aacute;vel
$a ter&aacute; seu valor impresso e ser&aacute; incrementada:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">&lt;?php<br>
function Teste() {<br>
&nbsp;&nbsp;static $a = 0;<br>
&nbsp;&nbsp;echo $a;<br>
&nbsp;&nbsp;$a++;<br>
}<br>
?&gt;</span><font face=\"Courier New\" size=\"3\"> </font></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O modificador static &eacute; muito utilizado em
fun&ccedil;&otilde;es recursivas, j&aacute; que o valor de algumas
vari&aacute;veis precisa ser mantido. Ele funciona da seguinte forma:
O valor das vari&aacute;veis declaradas como est&aacute;ticas &eacute;
mantido ao terminar a execu&ccedil;&atilde;o da fun&ccedil;&atilde;o.
Na pr&oacute;xima execu&ccedil;&atilde;o da fun&ccedil;&atilde;o,
ao encontrar novamente a declara&ccedil;&atilde;o com static, o
valor da vari&aacute;vel &eacute; recuperado.</p>
<p align=\"JUSTIFY\">Em outras palavras, uma vari&aacute;vel declarada
como <span class=\"mysql\">static </span>tem o mesmo &quot;tempo de
vida&quot; que uma vari&aacute;vel global, por&eacute;m sua visibilidade
&eacute; restrita ao escopo local em que foi declarada e s&oacute;
&eacute; recuperada ap&oacute;s a declara&ccedil;&atilde;o.</p>
<p align=\"JUSTIFY\">Exemplo: </p>
<p align=\"JUSTIFY\" class=\"mysql\">&lt;?php<br>
function Teste() {<br>
&nbsp;&nbsp;echo \"$a\";<br>
&nbsp;&nbsp;static $a = 0;<br>
&nbsp;&nbsp;$a++;<br>
}<br>
?&gt; </p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O exemplo acima n&atilde;o produzir&aacute; sa&iacute;da
alguma. Na primeira execu&ccedil;&atilde;o da fun&ccedil;&atilde;o,
a impress&atilde;o ocorre antes da atribui&ccedil;&atilde;o de um
valor &agrave; fun&ccedil;&atilde;o, e portanto o conte&uacute;do
de $a &eacute; nulo (string vazia). Nas execu&ccedil;&otilde;es
seguintes da fun&ccedil;&atilde;o Teste() a impress&atilde;o ocorre
antes da recupera&ccedil;&atilde;o do valor de <font face=\"Courier New\" size=3>$a</font>,
e portanto nesse momento seu valor ainda &eacute; nulo. Para que
a fun&ccedil;&atilde;o retorne algum valor o modificador <span class=\"mysql\">static
</span>deve ser utilizado.</p>
<p align=\"JUSTIFY\">&nbsp;</p>
<p align=\"JUSTIFY\">Vari&aacute;veis Vari&aacute;veis</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O PHP tem um recurso conhecido como vari&aacute;veis
vari&aacute;veis, que consiste em vari&aacute;veis cujos nomes tamb&eacute;m
s&atilde;o vari&aacute;veis. Sua utiliza&ccedil;&atilde;o &eacute;
feita atrav&eacute;s do duplo cifr&atilde;o ($$).</p>
<p align=\"JUSTIFY\"><span class=\"mysql\">&lt;?php<br>
$a = &quot;teste&quot;;<br>
$$a = &quot;Mauricio Vivas&quot;;</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">// O exemplo acima e equivalente
ao seguinte:</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">$a = &quot;teste&quot;;<br>
$teste = &quot;Mauricio Vivas&quot;;<br>
?&gt; </span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">&nbsp;</p>
<p align=\"JUSTIFY\">Vari&aacute;veis enviadas pelo navegador</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Para interagir com a navega&ccedil;&atilde;o feita
pelo usu&aacute;rio, &eacute; necess&aacute;rio que o PHP possa
enviar e receber informa&ccedil;&otilde;es para o software de navega&ccedil;&atilde;o.
A maneira de enviar informa&ccedil;&otilde;es, como j&aacute; foi
visto anteriormente, geralmente &eacute; atrav&eacute;s de um comando
de impress&atilde;o, como o echo. Para receber informa&ccedil;&otilde;es
vindas do navegador atrav&eacute;s de um link ou um formul&aacute;rio
html o PHP utiliza as informa&ccedil;&otilde;es enviadas atrav&eacute;s
da URL. Por exemplo: se seu script php est&aacute; localizado em
<span class=\"mysql\">&quot;http://localhost/teste.php3&quot;</span>
e voc&ecirc; o chama com a url <span class=\"mysql\">&quot;http://localhost/teste.php3?vivas=teste&quot;</span>,
automaticamente o PHP criar&aacute; uma vari&aacute;vel com o nome
$vivas contendo a string &quot;teste&quot;. Note que o conte&uacute;do
da vari&aacute;vel est&aacute; no formato <font face=\"Courier New\" size=3>urlencode</font>.
Os formul&aacute;rios html j&aacute; enviam informa&ccedil;&otilde;es
automaticamente nesse formato, e o PHP decodifica sem necessitar
de tratamento pelo programador.</p>
<p align=\"JUSTIFY\">&nbsp;</p>
<p align=\"JUSTIFY\">URLencode</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O formato <span class=\"mysql\">urlencode</span>
&eacute; obtido substituindo os espa&ccedil;os pelo caracter &quot;+&quot;
e todos os outros caracteres n&atilde;o alfa-num&eacute;ricos (com
exce&ccedil;&atilde;o de &quot;_&quot;) pelo caracter &quot;%&quot;
seguido do c&oacute;digo ASCII em hexadecimal.</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Por exemplo: o texto &quot;Testando 1 2 3 !!&quot;
em urlencode fica &quot;Testando+1+2+3+%21%21&quot;</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O PHP possui duas fun&ccedil;&otilde;es para tratar
com texto em urlencode. Seguem suas sintaxes:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">string urlencode(string
texto);</span></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">string urldecode(string
texto);</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Essas fun&ccedil;&otilde;es servem respectivamente
para codificar ou decodificar um texto passado como argumento. Para
entender melhor o que &eacute; um argumento e como funciona uma
fun&ccedil;&atilde;o, leia o t&oacute;pico &quot;fun&ccedil;&otilde;es&quot;.</p>
<p align=\"JUSTIFY\">&nbsp;</p>
<p align=\"JUSTIFY\">Utilizando arrays</p>
<p align=\"JUSTIFY\">Cada elemento de um formul&aacute;rio HTML submetido
a um script PHP cria no ambiente do mesmo uma vari&aacute;vel cujo
nome &eacute; o mesmo nome do elemento. Por exemplo: um campo definido
como:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\" class=\"mysql\">&lt;input type=&quot;text&quot; name=&quot;endereco&quot;&gt;</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">ao ser submetido a um script PHP far&aacute; com
que seja criada uma vari&aacute;vel com o nome <span class=\"mysql\">$endereco</span>.
Isto acontece de forma semelhante para cookies, como veremos mais
adiante.</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Uma boa t&eacute;cnica de programa&ccedil;&atilde;o
&eacute; utilizar a nota&ccedil;&atilde;o de arrays para nomes de
cookies ou itens de um formul&aacute;rio html. Para um conjunto
de checkboxes, por exemplo, podemos utilizar a seguinte nota&ccedil;&atilde;o:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">&lt;input type=\"checkbox\" name=\"teste[]\"
value=\"valor1\"&gt;opcao1<br>
</span><span class=\"mysql\">&lt;input type=\"checkbox\" name=\"teste[]\"
value=\"valor2\"&gt;opcao2<br>
</span><span class=\"mysql\">&lt;input type=\"checkbox\" name=\"teste[]\"
value=\"valor3\"&gt;opcao3<br>
</span><span class=\"mysql\">&lt;input type=\"checkbox\" name=\"teste[]\"
value=\"valor4\"&gt;opcao4<br>
</span><span class=\"mysql\">&lt;input type=\"checkbox\" name=\"teste[]\"
value=\"valor5\"&gt;opcao5</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Ao submeter o formul&aacute;rio, o script que recebe
os valores submetidos ter&aacute; uma vari&aacute;vel chamada <span class=\"mysql\">$teste</span>
contendo os valores marcados num array, com &iacute;ndices a partir
de zero. Assim, se forem marcadas as op&ccedil;oes 2, 3 e 5, poderemos
fazer as seguintes afirma&ccedil;&otilde;es:</p>
<p align=\"JUSTIFY\" class=\"mysql\">&lt;?php<br>
$teste == array(&quot;valor2&quot;, &quot;valor3&quot;, valor5&quot;);<br>
$teste[0] == &quot;valor2;<br>
$teste[1] == &quot;valor3;<br>
$teste[2] == &quot;valor5;<br>
?&gt; </p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O mesmo artif&iacute;cio pode ser utilizado com
outros elementos de formul&aacute;rios e at&eacute; com cookies.</p>
<p align=\"JUSTIFY\">&nbsp;</p>
<p align=\"JUSTIFY\">Vari&aacute;veis de ambiente</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O PHP possui diversas vari&aacute;veis de ambiente,
como a <span class=\"mysql\">$PHP_SELF</span>, por exemplo, que cont&eacute;m
o nome e o path do pr&oacute;prio arquivo. Algumas outras cont&eacute;m
informa&ccedil;&otilde;es sobre o navegador do usu&aacute;rio, o
servidor http, a vers&atilde;o do PHP e diversas informa&ccedil;&otilde;es.
Para ter uma listagem de todas as vari&aacute;veis e constantes
de ambiente e seus respectivos conte&uacute;dos, deve-se utilizar
a fun&ccedil;&atilde;o <span class=\"mysql\">phpinfo().</span></p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">&nbsp;</p>
<p align=\"JUSTIFY\">Verificando o tipo de uma vari&aacute;vel</p>
<p align=\"JUSTIFY\">Por causa da tipagem din&acirc;mica utilizada pelo
PHP, nem sempre &eacute; poss&iacute;vel saber qual o tipo de uma
vari&aacute;vel em determinado instantese n&atilde;o contar com
a ajuda de algumas fun&ccedil;&otilde;es que ajudam a verificar
isso. A verifica&ccedil;&atilde;o pode ser feita de duas maneiras:</p>
<p align=\"JUSTIFY\">&nbsp;</p>
<p align=\"JUSTIFY\">Fun&ccedil;&atilde;o que retorna o tipo da vari&aacute;vel</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Esta fun&ccedil;&atilde;o &eacute; a <span class=\"mysql\">gettype</span>.
Sua assinatura &eacute; a seguinte:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\" class=\"mysql\">string gettype(mixed var);</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">A palavra &quot;mixed&quot; indica que a vari&aacute;vel
var pode ser de diversos tipos.</p>
<p align=\"JUSTIFY\">A fun&ccedil;&atilde;o <span class=\"mysql\">gettype</span>
pode retornar as seguintes strings: <span class=\"mysql\">&quot;integer&quot;,
&quot;double&quot;, &quot;string&quot;, &quot;array&quot;, &quot;object&quot;
e &quot;unknown type&quot;.</span> </p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">&nbsp;</p>
<p align=\"JUSTIFY\">Fun&ccedil;&otilde;es que testam o tipo da vari&aacute;vel</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">S&atilde;o as fun&ccedil;&otilde;es <span class=\"mysql\">is_int,
is_integer, is_real, is_long, is_float, is_string, is_array e is_object</span>.
Todas t&ecirc;m o mesmo formato, seguindo modelo da assinatura a
seguir:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\" class=\"mysql\">int is_integer(mixed var);</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Todas essas fun&ccedil;&otilde;es retornam <span class=\"mysql\">true</span>
se a vari&aacute;vel for daquele tipo, e <span class=\"mysql\">false</span>
em caso contr&aacute;rio.</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">&nbsp;</p>
<p align=\"JUSTIFY\">Destruindo uma vari&aacute;vel</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">&Eacute; poss&iacute;vel desalocar uma vari&aacute;vel
se ela n&atilde;o for usada posteriormente atrav&eacute;s da fun&ccedil;&atilde;o
<span class=\"mysql\">unset</span>, que tem a seguinte assinatura:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\" class=\"mysql\">int unset(mixed var);</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">A fun&ccedil;&atilde;o destr&oacute;i a vari&aacute;vel,
ou seja, libera a mem&oacute;ria ocupada por ela, fazendo com que
ela deixe de existir. Se mais na frente for feita uma chamada &aacute;
vari&aacute;vel, ser&aacute; criada uma nova vari&aacute;vel de
mesmo nome e de conte&uacute;do vazio, a n&atilde;o ser que a chamada
seja pela fun&ccedil;&atilde;o <span class=\"mysql\">isset</span>.
Se a opera&ccedil;&atilde;o for bem sucedida, retorna <span class=\"mysql\">true</span>.</p>
<p align=\"JUSTIFY\">&nbsp;</p>
<p align=\"JUSTIFY\">Verificando se uma vari&aacute;vel possui um
valor
</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Existem dois tipos de teste que podem ser feitos
para verificar se uma vari&aacute;vel est&aacute; setada: com a
fun&ccedil;&atilde;o <span class=\"mysql\">isset</span> e com
a fun&ccedil;&atilde;o <span class=\"mysql\">empty</span>.</p>
<p align=\"JUSTIFY\">A fun&ccedil;&atilde;o isset</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Possui o seguinte prot&oacute;tipo:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\" class=\"mysql\">int isset(mixed var);</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">E retorna <span class=\"mysql\">true</span> se a
vari&aacute;vel estiver setada (ainda que com uma string vazia ou
o valor zero), e <span class=\"mysql\">false</span> em caso contr&aacute;rio.</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">A fun&ccedil;&atilde;o empty</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Possui a seguinte assinatura:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\" class=\"mysql\">int empty(mixed var);</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">E retorna <span class=\"mysql\">true</span> se a
vari&aacute;vel n&atilde;o contiver um valor (n&atilde;o estiver
setada) ou possuir valor 0 (zero) ou uma string vazia. Caso contr&aacute;rio,
retorna <span class=\"mysql\">false</span>.</p>
<p align=\"JUSTIFY\">Constantes pr&eacute;-definidas</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">O PHP possui algumas constantes pr&eacute;-definidas,
indicando a vers&atilde;o do PHP, o Sistema Operacional do servidor,
o arquivo em execu&ccedil;&atilde;o, e diversas outras informa&ccedil;&otilde;es.
Para ter acesso a todas as constantes pr&eacute;-definidas, pode-se
utilizar a fun&ccedil;&atilde;o <span class=\"mysql\">phpinfo()</span>,
que exibe uma tabela contendo todas as constantes pr&eacute;-definidas,
assim como configura&ccedil;&otilde;es da m&aacute;quina, sistema
operacional, servidor http e vers&atilde;o do PHP instalada.</p>
<p align=\"JUSTIFY\">&nbsp;</p>
<p align=\"JUSTIFY\">Definindo constantes</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">Para definir constantes utiliza-se a fun&ccedil;&atilde;o
<span class=\"mysql\">define</span>. Uma vez definido, o valor de
uma constante n&atilde;o poder&aacute; mais ser alterado. Uma constante
s&oacute; pode conter valores escalares, ou seja, n&atilde;o pode
conter nem um array nem um objeto. A assinatura da fun&ccedil;&atilde;o
<span class=\"mysql\">define</span> &eacute; a seguinte:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\" class=\"mysql\">int define(string nome_da_constante,
mixed valor);</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\">A fun&ccedil;&atilde;o retorna <font face=\"Courier New\" size=3>true</font>
se for bem-sucedida. Veja um exemplo de sua utiliza&ccedil;&atilde;o
a seguir:</p>
<p align=\"JUSTIFY\"></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">&lt;?php<br>
define (\"pi\", 3.1415926536);</span></p>
<p align=\"JUSTIFY\"><span class=\"mysql\">$circunf = 2*pi*$raio;<br>
?&gt;</span></p>

Comentários:

Mostrando 1 - 10 de 19 comentários
Alguem descobriu onde baixar esse tutorial???
02/09/2008 8:57am (~12 anos atrás)

Como baixar o tutorial ?
24/05/2008 2:56pm (~12 anos atrás)

João Santos disse:
como baixo o tutorial?

obrigado
30/03/2008 8:16am (~12 anos atrás)

Estou procurando a dias esse arquivos PDF com as imagens, pois não estou encontrando o arquivo completo, quero imprimir isso.

Obriado.
28/06/2007 5:30am (~13 anos atrás)

Cyrus disse:
01/06/2006 5:22am (~14 anos atrás)


tentei no passado aprender por apostila,
mais livros ajudar muito ,em especial aquele que envolver o leitor num projeto.
esse tipo de trabalho ou livro são excelente ajuda : mais legal pela iniciativa
25/11/2005 10:32am (~15 anos atrás)

Legal colega - me ajudou muito !
28/09/2005 6:29pm (~15 anos atrás)

As imagens não estão aparecendo e tentei acessar o site do autor, mas também não funciona.
Alguém tem disponível para download?
24/06/2005 7:06pm (~15 anos atrás)

dizem q a primeira impreção é a q fica,
axei bastante intuitivo.
:)
24/04/2005 11:56pm (~15 anos atrás)

Galera, quem estiver afim de baixar o tutorial é só acessar o seguinte link
http://www.helo.tato.nom.br/arquivos/apostilaphp_mv.pdf

Té +
11/03/2005 7:31pm (~15 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)