Apostila desenvolvida por Bruno Rodrigues Siqueira( bruno@netfly.com.br )
ndice 1. Introduo O que PHP? PHP significa Hyperte!t Preprocessor. Realmente" o produto foi originalmente c#amado de $Personal Home Page %ools&' mas como se e!pandiu em escopo" um nome novo e mais apropriado foi escol#ido por vota()o da comunidade. *oc+ pode utili,ar qualquer e!tens)o que dese-ar para designar um arquivo PHP" mas os recomendados foram .p#p " .p#tml. . PHP est/ atualmente na vers)o 0" c#amado de PHP0 ou" simplesmente de PHP. PHP 1 uma linguagem de cria()o de scripts embutida em H%23 no servidor. .s produtos patenteados nesse nic#o do mercado s)o as Active Server Pages da 2icrosoft" o 4oldfusion da Allaire e as 5ava Server Pages da Sun. PHP 1 6s ve,es c#amado de $o ASP de c7digo8fonte aberto& porque sua funcionabilidade 1 t)o semel#ante ao produto9conceito" ou o que quer que se-a" da 2icrosoft. :!ploraremos a cria()o de script no servidor" mais profundamente" nos pr7!imos cap;tulos" mas" no momento" voc+ pode pensar no PHP como uma cole()o de supertags de H%23 que permitem adicionar fun(<es do servidor 6s suas p/ginas da =eb. Por e!emplo" voc+ pode utili,ar PHP para montar instantaneamente uma comple!a p/gina da =eb ou desencadear um programa que automaticamente e!ecute o d1bito no cart)o de cr1dito quando um cliente reali,ar uma compra. >alando estritamente" o PHP tem pouca rela()o com layout" eventos ou qualquer coisa relacionada 6 apar+ncia de uma p/gina da =eb. ?e fato" a maior parte do que o PHP reali,a 1 invis;vel para o usu/rio final. Algu1m visuali,ando uma p/gina de PHP n)o ser/ capa, de di,er que n)o foi escrita em H%23" porque o resultado final do PHP 1 H%23. . PHP 1 um m7dulo oficial do servidor #ttp Apac#e" o l;der do mercado de servidores =eb livres que constitui apro!imadamente @@ por cento da =orld =ide =eb. Asso significa que o mecanismo de script do PHP pode ser constru;do no pr7prio servidor =eb" tornando a manipula()o de dados mais r/pida. Assim como o servidor Apac#e" o PHP 1 compat;vel com v/rias plataformas" o que significa que ele e!ecuta em seu formato original em v/rias vers<es do BCAD e do =indoEs. %odos os pro-etos sob a 1gide da Apac#e SoftEare >oundation F incluindo o PHP F s)o softEare de c7digo8fonte aberto. As v/rias vers<es do PHP foram aclamadas e premiadas nos Gltimos anos. . PHPH foi o finalista em IJJJ no 3inu!=orld :ditorKs 4#oice AEards (na categoria de biblioteca9ferramentas de programa()o) e gan#ou o segundo lugar" perdendo s7 para o 4old>usion" em IJJL no 4net Builder.com Product AEards (na categoria de mel#or ferramenta de script de servidor F eles deram bastante importMncia ao A?:)" ao passo que a combina()o PHPH92ySN3 gan#ou pr+mio de banco de dados do ano no =ebJL. Cada mau para um softEare sem rela(<es pGblicas" sem publicidade e sem uma significativa e!posi()o na m;dia. Histria do PHP Rasmus 3erdorf F engen#eiro de softEare" membro da equipe Apac#e e o #omem misterioso do ano F 1 o criador e a for(a motri, original por tr/s do PHP. A primeira parte do PHP foi desenvolvida para utili,a()o pessoal no final de IJJ0. %ratava8se de um Erapper de Perl4OA que o au!iliava a monitorar as pessoas que acessavam o seu site pessoal. Co ano seguinte" ele montou um pacote c#amado de Personal Home Page %ools (tamb1m con#ecido como PHP 4onstruction Pit) em resposta 6 demanda de usu/rios que por acaso ou por relatos falados depararam8se com o seu trabal#o. A vers)o Q foi logo lan(ada sob o t;tulo de PHP9>A e inclu;a o >orm Anterpreter" uma ferramenta para analisar sintaticamente consultas de SN3. :m meados de IJJR" o PHP estava sendo utili,ado mundialmente em apro!imadamente @S.SSS sites. .bviamente estava se tornando muito grande para uma Gnica pessoa administrar" mesmo para algu1m concentrado e c#eio de energia como Rasmus. Agora uma pequena equipe central de desenvolvimento mantin#a o pro-eto sobre o modelo de $-unta benevolente& do c7digo8fonte aberto" com contribui(<es de desenvolvedores e usu/rios em todo o mundo. Teev SurasUi e Andi Outmans" dois programadores israelenses que desenvolveram os analisadores de sinta!e PHPH e PHP0" tamb1m generali,aram e estenderam seus trabal#os sob a rubrica de Tend.com (Teev" Andi" Tend" entendeuV). . quarto trimestre de IJJL iniciou um per;odo de crescimento e!plosivo para o PHP" quando todas as tecnologias de c7digo8fonte aberto gan#aram uma publicidade intensa. :m outubro de IJJL" de acordo com a mel#or suposi()o" mais de ISS.SSS dom;nios Gnicos utili,avam PHP de alguma maneira. Bm ano depois" o PHP quebrou a marca de um mil#)o de dom;nios. :nquanto escrevo esta apostila" o nGmero e!plodiu para cerca de dois mil#<es de dom;nios. O que pode ser feito com PHP? Basicamente" qualquer coisa que pode ser feita por algum programa 4OA pode ser feita tamb1m com PHP" como coletar dados de um formul/rio" gerar p/ginas dinamicamente ou enviar e receber cooUies. PHP tamb1m tem como uma das caracter;sticas mais importantes o suporte a um grande nGmero de bancos de dados" como dBase" Anterbase" mSN3" mySN3" .racle" Sybase" PostgreSN3 e v/rios outros. 4onstruir uma p/gina baseada em um banco de dados torna8se uma tarefa e!tremamente simples com PHP. Al1m disso" PHP tem suporte a outros servi(os atrav1s de protocolos como A2AP" SC2P" CC%P" P.PH e" logicamente" H%%P. Ainda 1 poss;vel abrir socUets e interagir com outros protocolos. Tabela comparativa Custos Comparativos Item ASP Cold Fusion JSP PHP ?esenvolvimento BSW S F 0LS BSW HJ@ BSW S BSW S Servidor BSW XQS BSW I.QJ@ BSW S F @J@ BSW S R?B2S BSW I.QQS 8 0QQS BSW S 8 YIS.SSS BSW S 8 YIS.SSS BSW S Suporte de incidente BSWS 8 Q0@ BSW S 8 R@ BSW S 8 R@ BSW S 2. Sintaxe Bsica Delimitando o cdigo PHP . c7digo PHP fica embutido no pr7prio H%23. . interpretador identifica quando um c7digo 1 PHP pelas seguintes tags <?php comandos ?> <script language=php> comandos </script> <? comandos ?> <% comandos %> . tipo de tags mais utili,ado 1 o terceiro" que consiste em uma $abrevia()o& do primeiro. Para utili,/8lo" 1 necess/rio #abilitar a op()o s#ort8tags na configura()o do PHP. . Gltimo tipo serve para facilitar o uso por programadores acostumados 6 sinta!e de ASP. Para utili,/8lo tamb1m 1 necess/rio #abilit/8lo no arquivo de configura()o do PHP (p#p.ini) Separador de instrues Para cada fim de lin#a de c7digo tem que #aver um ponto e v;rgula" indicando ao sistema fim de instru()o. :!emplo. ZV ec#o [com ponto e v;rgula[ ' V\ 3in#as de comando" de controle" n)o precisam de ponto e v;rgula. :!emplo. ZV if (W! ]] W!)^ 99aqui n)o precisa de ponto e v;rgula ec#o [com ponto e v;rgula[ ' 99aqui precisa de ponto e v;rgula _ V\ omes de vari!veis %oda vari/vel em PHP tem seu nome composto pelo caracter W e uma string" que deve iniciar por uma letra ou o caracter $`&. PHP 1 case sensitive" ou se-a" as vari/veis Wp#p e WPHP s)o diferentes. Por isso 1 preciso ter muito cuidado ao definir os nomes das vari/veis. a bom evitar os nomes em maiGsculas" pois como veremos mais adiante" o PHP -/ possui alguma vari/veis pr18definidas cu-os nomes s)o formados por letras maiGsculas. "oment!rios H/ dois tipos de coment/rios em c7digo PHP Comentrios de uma linha: 2arca como coment/rio at1 o final da lin#a ou at1 o final do bloco de c7digo PHP 8 o que vier antes. Pode ser delimitado pelo caracter $b& ou por duas barras ( 99 ). Exemplo: <? echo teste; #isto um teste echo teste; //este teste similar ao anterior ?> Comentrios de mais de uma linha: %em como delimitadores os caracteres / para o in;cio do bloco e / para o final do coment/rio. Se o delimitador de final de c7digo PHP ( ?> ) estiver dentro de um coment/rio" n)o ser/ recon#ecido pelo interpretador. Exemplos: <? echo teste; / !sto um coment"rio com mais de uma linha #ue $unciona corretamente / ?> 3. Tipos Tipos Suportados PHP suporta os seguintes tipos de dados Anteiro Ponto flutuante String Array .b-eto PHP utili,a c#ecagem de tipos dinMmica" ou se-a" uma vari/vel pode conter valores de diferentes tipos em diferentes momentos da e!ecu()o do script. Por este motivo n)o 1 necess/rio declarar o tipo de uma vari/vel para us/8la. . interpretador PHP decidir/ qual o tipo daquela vari/vel" verificando o conteGdo em tempo de e!ecu()o. Ainda assim" 1 permitido converter os valores de um tipo para outro dese-ado" utili,ando o typecasting ou a fun()o sett%pe (ver adiante). Inteiros (integer ou long) Bma vari/vel pode conter um valor inteiro com atribui(<es que sigam as seguintes sinta!es &php = '()*; # inteiro positi+o na ,ase decimal &php = -()*; # inteiro negati+o na ,ase decimal &php = .()*; # inteiro na ,ase octal-sim,oli/ado pelo . # e#ui+ale a '01 decimal &php = .x)*; # inteiro na ,ase hexadecimal2sim,oli/ado # pelo .x3 - e#ui+ale a 0( decimal4 A diferen(a entre inteiros simples e long est/ no nGmero de bytes utili,ados para arma,enar a vari/vel. 4omo a escol#a 1 feita pelo interpretador PHP de maneira transparente para o usu/rio" podemos afirmar que os tipos s)o iguais. Nmeros em Ponto Flutuante (double ou float) Bma vari/vel pode ter um valor em ponto flutuante com atribui(<es que sigam as seguintes sinta!es &php = '4()*; &php = ()e*; # e#ui+ale a ().4... Strings Strings podem ser atribu;das de duas maneiras a) utili,ando aspas simples ( [ ) 8 ?esta maneira" o valor da vari/vel ser/ e!atamente o te!to contido entre as aspas (com e!ce()o de cc e c[ 8 ver tabela abai!o) b) utili,ando aspas duplas ( d ) 8 ?esta maneira" qualquer vari/vel ou caracter de escape ser/ e!pandido antes de ser atribu;do. Exemplo: <? $teste = "Brasil"; $php = '---$teste--\n'; echo "$php"; ?> A sa;da desse script ser/ d888Wteste88cnd. <? $teste = "Brasil"; $php = "---$teste---\n"; echo "$php"; ?> A sa;da desse script ser/ d888Brasil88d (com uma quebra de lin#a no final). A tabela seguinte lista os caracteres de escape Sintaxe Significado cn Cova lin#a cr Retorno de carro (semel#ante a cn) ct %abula()o #ori,ontal cc A pr7pria barra ( c ) cW . s;mbolo W ce Aspa simples c& Aspa dupla Arras Arrays em PHP podem ser observados como mapeamentos ou como vetores inde!ados. 2ais precisamente" um valor do tipo array 1 um dicion/rio onde os ;ndices s)o as c#aves de acesso. *ale ressaltar que os ;ndices podem ser valores de qualquer tipo e n)o somente inteiros. Anclusive" se os ;ndices forem todos inteiros" estes n)o precisam formar um intervalo cont;nuo 4omo a c#ecagem de tipos em PHP 1 dinMmica" valores de tipos diferentes podem ser usados como ;ndices de array" assim como os valores mapeados tamb1m podem ser de diversos tipos. Exemplo: <? &cor5'6 = +ermelho; &cor5(6 = +erde; &cor5)6 = a/ul; &cor5teste6 = '; ?> E#ui+alentemente7 pode-se escre+er: <? &cor = arra%2' => +ermelho7 ( => +erde7 ) => a/ul7 teste => '3; ?> #istas As listas s)o utili,adas em PHP para reali,ar atribui(<es mGltiplas. Atrav1s de listas 1 poss;vel atribuir valores que est)o num array para vari/veis. *e-amos o e!emplo Exemplo: list2&a7 &,7 &c3 = arra%2a7 ,7 c3; . comando acima atribui valores 6s tr+s vari/veis simultaneamente. a bom notar que s7 s)o atribu;dos 6s vari/veis da lista os elementos do array que possuem ;ndices inteiros e n)o negativos. Co e!emplo acima as tr+s atribui(<es foram bem sucedidas porque ao iniciali,ar um array sem especificar os ;ndices eles passam a ser inteiros" a partir do ,ero. Bm fator importante 1 que cada vari/vel da lista possui um ;ndice inteiro e ordinal" iniciando com ,ero" que serve para determinar qual valor ser/ atribu;do. Co e!emplo anterior temos Wa com ;ndice S" Wb com ;ndice I e Wc com ;ndice Q. *e-amos um outro e!emplo &arr = arra%2'=>um7)=>tres7a=>letra87(=>dois3; list2&a7&,7&c7&d3 = &arr; Ap7s a e!ecu()o do c7digo acima temos os seguintes valores &a == null &, == um &c == dois &d == tres ?evemos observar que 6 vari/vel Wa n)o foi atribu;do valor" pois no array n)o e!iste elemento com ;ndice S (,ero). .utro detal#e importante 1 que o valor $tres& foi atribu;do 6 vari/vel Wd" e n)o a Wb" pois seu ;ndice 1 H" o mesmo que Wd na lista. Por fim" vemos que o valor $letraA& n)o foi atribu;do a elemento algum da lista" pois seu ;ndice n)o 1 inteiro. .s ;ndices da lista servem apenas como refer+ncia ao interpretador PHP para reali,ar as atribui(<es" n)o podendo ser acessados de maneira alguma pelo programador. ?e maneira diferente do array" uma lista n)o pode ser atribu;da a uma vari/vel" servindo apenas para fa,er mGltiplas atribui(<es atrav1s de um array. Ob$etos Bm ob-eto pode ser iniciali,ado utili,ando o comando neE para instanciar uma classe para uma vari/vel. Exemplo: class teste 9 $unction nada23 9 echo nada; : : &php = ne; teste; &php -> nada23; A utili,a()o de ob-etos ser/ mais detal#ada mais 6 frente. %ooleanos PHP n)o possui um tipo booleano" mas 1 capa, de avaliar e!press<es e retornar true ou false" atrav1s do tipo integer 1 usado o valor S (,ero) para representar o estado false" e qualquer valor diferente de ,ero (geralmente I) para representar o estado true. Transforma&o de tipos A transforma()o de tipos em PHP pode ser feita das seguintes maneiras "oeres Nuando ocorrem determinadas opera(<es ($f&" por e!emplo) entre dois valores de tipos diferentes" o PHP converte o valor de um deles automaticamente (coer()o). a interessante notar que se o operando for uma vari/vel" seu valor n)o ser/ alterado. . tipo para o qual os valores dos operandos ser)o convertidos 1 determinado da seguinte forma Se um dos operandos for $loat" o outro ser/ convertido para $loat" sen)o" se um deles for integer" o outro ser/ convertido para integer. Exemplo: &php = '; // &php a string ' &php = &php < '; // &php o integer ( &php = &php < )4=;// &php o dou,le 04= &php = ' < '40 // &php o dou,le (40 4omo podemos notar" o PHP converte string para integer ou dou,le mantendo o valor. . sistema utili,ado pelo PHP para converter de strings para nGmeros 1 o seguinte a analisado o in;cio da string. Se contiver um nGmero" ele ser/ avaliado. Sen)o" o valor ser/ S (,ero)' . nGmero pode conter um sinal no in;cio ($f& ou $8$)' Se a string contiver um ponto em sua parte num1rica a ser analisada" ele ser/ considerado" e o valor obtido ser/ dou,le' Se a string contiver um $e& ou $:& em sua parte num1rica a ser analisada" o valor seguinte ser/ considerado como e!poente da base IS" e o valor obtido ser/ dou,le' Exemplos: &php = ' < '.40; // &php == ''40 &php = ' < -'4)e); // &php == -'(>> &php = ' < teste'.40; // &php == ' &php = ' < '.testes; // &php == '' &php = ' < ? '.testes?; // &php == '' &php = ' < ?< '.testes?; // &php == ' Transforma&o e'pl(cita de tipos A sinta!e do typecast de PHP 1 semel#ante ao 4 basta escrever o tipo entre par+nteses antes do valor Exemplo: &php = '0; // &php integer 2'03 &php = 2dou,le3 &php // &php dou,le 2'04.3 &php = )4> // &php dou,le 2)4>3 &php = 2int3 &php // &php integer 2)3 // o +alor decimal truncado .s tipos de cast permitidos s)o (int)" (integer) muda para integer' (real)" (double)" (float) muda para float' (string) muda para string' (array) muda para array' (ob-ect) muda para ob-eto. "om a fun&o sett)pe A fun()o sett%pe converte uma vari/vel para o tipo especificado" que pode ser $integer&" $double&" $string&" $array& ou $ob-ect&. Exemplo: &php = '0; // &php integer sett%pe2&php7dou,le3 // &php dou,le 4. Constantes "onstantes pr*definidas . PHP possui algumas constantes pr18definidas" indicando a vers)o do PHP" o Sistema .peracional do servidor" o arquivo em e!ecu()o" e diversas outras informa(<es. Para ter acesso a todas as constantes pr18definidas" pode8se utili,ar a fun()o phpin$o23" que e!ibe uma tabela contendo todas as constantes pr18definidas" assim como configura(<es da m/quina" sistema operacional" servidor #ttp e vers)o do PHP instalada. Definindo constantes Para definir constantes utili,a8se a fun()o de$ine. Bma ve, definido" o valor de uma constante n)o poder/ mais ser alterado. Bma constante s7 pode conter valores escalares" ou se-a" n)o pode conter nem um array nem um ob-eto. A assinatura da fun()o de$ine 1 a seguinte int de$ine2string nome@da@constante7 mixed +alor3; A fun()o retorna true se for bem8sucedida. *e-a um e!emplo de sua utili,a()o a seguir de$ine 2?pi?7 )4'*'0>(10)13; &circun$ = (pi&raio; 5. Operadores +ritmticos S7 podem ser utili,ados quando os operandos s)o nGmeros (integer ou float). Se forem de outro tipo" ter)o seus valores convertidos antes da reali,a()o da opera()o. < adi()o - subtra()o multiplica()o / divis)o % m7dulo de strings S7 #/ um operador e!clusivo para strings . concatena()o de atribui&o :!iste um operador b/sico de atribui()o e diversos derivados. Sempre retornam o valor atribu;do. Co caso dos operadores derivados de atribui()o" a opera()o 1 feita entre os dois operandos" sendo atribu;do o resultado para o primeiro. A atribui()o 1 sempre por valor" e n)o por refer+ncia. = atribui()o simples <= atribui()o com adi()o -= atribui()o com subtra()o = atribui()o com multiplica()o /= atribui()o com divis)o %= atribui()o com m7dulo 4= atribui()o com concatena()o Exemplo: &a = =; &a <= (; // &a passa a conter o +alor > bit a bit 4omparam dois nGmeros bit a bit. g $e& l7gico h $ou& l7gico i ou e!clusivo Y n)o (invers)o) ZZ s#ift left \\ s#ift rig#t #gicos Btili,ados para inteiros representando valores booleanos and $e& l7gico or $ou& l7gico !or ou e!clusivo j n)o (invers)o) gg $e& l7gico hh $ou& l7gico :!istem dois operadores para $e& e para $ou porque eles t+m diferentes posi(<es na ordem de preced+ncia. "ompara&o As compara(<es s)o feitas entre os valores contidos nas vari/veis" e n)o as refer+ncias. Sempre retornam um valor booleano. ]] igual a j] diferente de Z menor que \ maior que Z] menor ou igual a \] maior ou igual a ,'press&o condicional :!iste um operador de sele()o que 1 tern/rio. >unciona assim 2expressao'3?2expressao(3:2 expressao)3 o interpretador PHP avalia a primeira e!press)o. Se ela for verdadeira" a e!press)o retorna o valor de e!press)oQ. Sen)o" retorna o valor de e!press)oH. de incremento e decremento ff incremento 88 decremento Podem ser utili,ados de duas formas antes ou depois da vari/vel. Nuando utili,ado antes" retorna o valor da vari/vel antes de increment/8la ou decrement/8la. Nuando utili,ado depois" retorna o valor da vari/vel -/ incrementado ou decrementado. Exemplos: &a = &, = '.; // &a e &, rece,em o +alor '. &c = &a<<; // &c rece,e '. e &a passa a ter '' &d = <<&,; // &d rece,e ''7 +alor de &, A" incrementado Ordem de preced-ncia dos operadores A tabela a seguir mostra a ordem de preced+ncia dos operadores no momento de avaliar as e!press<es' Preced!ncia Associati"idade #$eradores I. :squerda " Q. :squerda or H. :squerda !or 0. :squerda and @. ?ireita print X. :squerda ] f] 8] k] 9] .] l] g] j] Y] ZZ] \\] R. :squerda V L. :squerda hh J. :squerda gg IS. :squerda h II. :squerda i IQ. :squerda g IH. n)o associa ]] j] I0. n)o associa Z Z] \ \] I@. :squerda ZZ \\ IX. :squerda f 8 . IR. :squerda k 9 l IL. ?ireita j Y ff 88 (int) (double) (string) (array) (ob-ect) @ IJ. ?ireita m QS. n)o associa neE 6. Estruturas de Controle As estruturas que veremos a seguir s)o comuns para as linguagens de programa()o imperativas" bastando" portanto" descrever a sinta!e de cada uma delas" resumindo o funcionamento. %locos Bm bloco consiste de v/rios comandos agrupados com o ob-etivo de relacion/8los com determinado comando ou fun()o. :m comandos como i$" $or" ;hile" s;itch e em declara(<es de fun(<es blocos podem ser utili,ados para permitir que um comando fa(a parte do conte!to dese-ado. Blocos em PHP s)o delimitados pelos caracteres $^& e $_&. A utili,a()o dos delimitadores de bloco em uma parte qualquer do c7digo n)o relacionada com os comandos citados ou fun(<es n)o produ,ir/ efeito algum" e ser/ tratada normalmente pelo interpretador. Exemplo: i$ 2&x == &%3 comando'; comando(; Para que comandoQ este-a relacionado ao if 1 preciso utili,ar um bloco i$ 2&x == &%39 comando'; comando(; : "omandos de sele&o %amb1m c#amados de condicionais" os comandos de sele()o permitem e!ecutar comandos ou blocos de comandos com base em testes feitos durante a e!ecu()o. if . mais trivial dos comandos condicionais 1 o i$. :le testa a condi()o e e!ecuta o comando indicado se o resultado for true (valor diferente de ,ero). :le possui duas sinta!es i$ 2expressBo3 comando; i$ 2expressBo39 comando'; comando(; comando); comando*; comando0; comando'; comando(; comando); : i$ 2expressBo3: comando; 4 4 4 comando; endi$; Para incluir mais de um comando no i$ da primeira sinta!e" 1 preciso utili,ar um bloco" demarcado por c#aves. . else 1 um complemento opcional para o i$. Se utili,ado" o comando ser/ e!ecutado se a e!press)o retornar o valor $alse (,ero). Suas duas sinta!es s)o i$ 2expressBo3 comando; else comando; i$ 2expressBo3: comando; 4 4 4 comando; else comando; 4 4 4 comando; endi$; A seguir" temos um e!emplo do comando i$ utili,ado com else i$ 2&a > &,3 &maior = &a; else &maior = &,; . e!emplo acima coloca em Wmaior o maior valor entre Wa e Wb :m determinadas situa(<es 1 necess/rio fa,er mais de um teste" e e!ecutar condicionalmente diversos comandos ou blocos de comandos. Para facilitar o entendimento de uma estrutura do tipo i$ 2expressao'3 comando'; else i$ 2expressao(3 comando(; else i$ 2expressao)3 comando); else comando*; foi criado o comando" tamb1m opcional elsei$. :le tem a mesma fun()o de um else e um i$ usados seqnencialmente" como no e!emplo acima. Cum mesmo i$ podem ser utili,ados diversos elsei$es" ficando essa utili,a()o a crit1rio do programador" que deve ,elar pela legibilidade de seu script. . comando elsei$ tamb1m pode ser utili,ado com dois tipos de sinta!e. :m resumo" a sinta!e geral do comando i$ fica das seguintes maneiras i$ 2expressao'3 comando; 5 elsei$ 2expressao(3 comando; 6 5 else comando; 6 i$ 2expressao'3 : comando; 4 4 4 comando; 5 elsei$ 2expressao(3 comando; 4 4 4 comando; 6 5 else comando; 4 4 4 comando; 6 endi$; s%itc& . comando s;itch atua de maneira semel#ante a uma s1rie de comandos i$ na mesma e!press)o. >reqnentemente o programador pode querer comparar uma vari/vel com diversos valores" e e!ecutar um c7digo diferente a depender de qual valor 1 igual ao da vari/vel. Nuando isso for necess/rio" deve8se usar o comando s;itch. . e!emplo seguinte mostra dois trec#os de c7digo que fa,em a mesma coisa" sendo que o primeiro utili,a uma s1rie de i$es e o segundo utili,a s;itch i$ 2&i == .3 print i igual a /ero; elsei$ 2&i == '3 print i igual a um; elsei$ 2&i == (3 print i igual a dois; s;itch 2&i3 9 case .: print i igual a /ero; ,reaC; case ': print i igual a um; ,reaC; case (: print i igual a dois; ,reaC; : a importante compreender o funcionamento do s;itch para n)o cometer enganos. . comando s;itch testa lin#a a lin#a os cases encontrados" e a partir do momento que encontra um valor igual ao da vari/vel testada" passa a e!ecutar todos os comandos seguintes" mesmo os que fa,em parte de outro teste" at1 o fim do bloco. por isso usa8se o comando ,reaC" quebrando o flu!o e fa,endo com que o c7digo se-a e!ecutado da maneira dese-ada. *eremos mais sobre o ,reaC mais adiante. *e-a o e!emplo s;itch 2&i3 9 case .: print i igual a /ero; case ': print i igual a um; case (: print i igual a dois; _ Co e!emplo acima" se Wi for igual a ,ero" os tr+s comandos $print& ser)o e!ecutados. Se Wi for igual a I" os dois Gltimos $print& ser)o e!ecutados. . comando s7 funcionar/ da maneira dese-ada se Wi for igual a Q. :m outras linguagens que implementam o comando sEitc#" ou similar" os valores a serem testados s7 podem ser do tipo inteiro. :m PHP 1 permitido usar valores do tipo string como elementos de teste do comando sEitc#. . e!emplo abai!o funciona perfeitamente s;itch 2&s3 9 case casa: print 8 casa amarela; case ar+ore: print a "r+ore ,onita; case lDmpada: print EoBo apagou a lDmpada; _ comandos de repeti&o %&ile . ;hile 1 o comando de repeti()o (la(o) mais simples. :le testa uma condi()o e e!ecuta um comando" ou um bloco de comandos" at1 que a condi()o testada se-a falsa. Assim como o i$" o ;hile tamb1m possui duas sinta!es alternativas ;hile 2<expressBo>3 <comando>; ;hile 2<expressBo>39 <comando'>; <comando(>; <comando)>; <comando*>; <comando0>; <comando)>; : ;hile 2<expressBo>3: <comando>; 4 4 4 <comando>; end;hile; A e!press)o s7 1 testada a cada ve, que o bloco de instru(<es termina" al1m do teste inicial. Se o valor da e!press)o passar a ser $alse no meio do bloco de instru(<es" a e!ecu()o segue at1 o final do bloco. Se no teste inicial a condi()o for avaliada como $alse" o bloco de comandos n)o ser/ e!ecutado. . e!emplo a seguir mostra o uso do ;hile para imprimir os nGmeros de I a IS &i = '; ;hile 2&i <='.3 print &i<<; do... %&ile . la(o do444;hile funciona de maneira bastante semel#ante ao ;hile" com a simples diferen(a que a e!press)o 1 testada ao final do bloco de comandos. . la(o do444;hile possui apenas uma sinta!e" que 1 a seguinte do 9 <comando> 4 4 4 <comando> : ;hile 2<expressBo>3; . e!emplo utili,ado para ilustrar o uso do ;hile pode ser feito da seguinte maneira utili,ando o do444 ;hile &i = .; do 9 print <<&i; : ;hile 2&i < '.3; for . tipo de la(o mais comple!o 1 o $or. Para os que programam em 4" 4ff ou 5ava" a assimila()o do funcionamento do for 1 natural. 2as para aqueles que est)o acostumados a linguagens como Pascal" #/ uma grande mudan(a para o uso do for. As tr+s sinta!es permitidas s)o $or 2<iniciali/aFBo>;<condiFBo>;<incremento ou decremento>3 <comando>; $or 2<iniciali/aFBo>;<condiFBo>;<incremento ou decremento>39 <comando>; <comando>; <comando>; <comando>; <comando>; : $or 2<iniciali/aFBo>;<condiFBo>;<incremento ou decremento>3: <comando>; 4 4 4 <comando>; end$or; As tr+s e!press<es que ficam entre par+nteses t+m as seguintes finalidades Aniciali,a()o comando ou seqn+ncia de comandos a serem reali,ados antes do inicio do la(o. Serve para iniciali,ar vari/veis. 4ondi()o :!press)o booleana que define se os comandos que est)o dentro do la(o ser)o e!ecutados ou n)o. :nquanto a e!press)o for verdadeira (valor diferente de ,ero) os comandos ser)o e!ecutados. Ancremento 4omando e!ecutado ao final de cada e!ecu()o do la(o. Bm comando $or funciona de maneira semel#ante a um ;hile escrito da seguinte forma <iniciali/aFBo> ;hile 2<condiFBo>3 9 comandos 444 <incremento> : .uebra de flu'o 'rea( . comando ,reaC pode ser utili,ado em la(os de do" $or e ;hile" al1m do uso -/ visto no comando s;itch. Ao encontrar um ,reaC dentro de um desses la(os" o interpretador PHP para imediatamente a e!ecu()o do la(o" seguindo normalmente o flu!o do script. ;hile 2&x > .3 9 444 i$ 2&x == (.3 9 echo erroG x = (.; ,reaC; 444 : Co trec#o de c7digo acima" o la(o ;hile tem uma condi()o para seu t1rmino normal (W! Z] S)" mas foi utili,ado o breaU para o caso de um t1rmino n)o previsto no in;cio do la(o. Assim o interpretador seguir/ para o comando seguinte ao la(o. )ontinue . comando continue tamb1m deve ser utili,ado no interior de la(os" e funciona de maneira semel#ante ao ,reaC" com a diferen(a que o flu!o ao inv1s de sair do la(o volta para o in;cio dele. *e-amos o e!emplo $or 2&i = .; &i < '..; &i<<3 9 i$ 2&i % (3 continue; echo &i ; : . e!emplo acima 1 uma maneira ineficiente de imprimir os nGmeros pares entre S e JJ. . que o la(o fa, 1 testar se o resto da divis)o entre o nGmero e Q 1 S. Se for diferente de ,ero (valor l7gico true) o interpretador encontrar/ um continue" que fa, com que os comandos seguintes do interior do la(o se-am ignorados" seguindo para a pr7!ima itera()o. . !un"#es Definindo funes A sinta!e b/sica para definir uma fun()o 1 $unction nome@da@$unFBo25arg'7 arg(7 arg)63 9 Homandos; 444 ; 5return <+alor de retorno>6; : Nualquer c7digo PHP v/lido pode estar contido no interior de uma fun()o. 4omo a c#ecagem de tipos em PHP 1 dinMmica" o tipo de retorno n)o deve ser declarado" sendo necess/rio que o programador este-a atento para que a fun()o retorne o tipo dese-ado. a recomend/vel que este-a tudo bem documentado para facilitar a leitura e compreens)o do c7digo. Para efeito de documenta()o" utili,a8se o seguinte formato de declara()o de fun()o tipo $unction nome@da@$uncao2tipo arg'7 tipo arg(7 4443; :ste formato s7 deve ser utili,ado na documenta()o do script" pois o PHP n)o aceita a declara()o de tipos. Asso significa que em muitos casos o programador deve estar atento ao tipos dos valores passados como parMmetros" pois se n)o for passado o tipo esperado n)o 1 emitido nen#um alerta pelo interpretador PHP" -/ que este n)o testa os tipos. /alor de retorno %oda fun()o pode opcionalmente retornar um valor" ou simplesmente e!ecutar os comandos e n)o retornar valor algum. C)o 1 poss;vel que uma fun()o retorne mais de um valor" mas 1 permitido fa,er com que uma fun()o retorne um valor composto" como listas ou arrays. +rgumentos a poss;vel passar argumentos para uma fun()o. :les devem ser declarados logo ap7s o nome da fun()o" entre par+nteses" e tornam8se vari/veis pertencentes ao escopo local da fun()o. A declara()o do tipo de cada argumento tamb1m 1 utili,ada apenas para efeito de documenta()o. Exemplo: $unction imprime2&texto39 echo &texto; : imprime2teste de $unFIes3; Passagem de par0metros por refer-ncia Cormalmente" a passagem de parMmetros em PHP 1 feita por valor" ou se-a" se o conteGdo da vari/vel for alterado" essa altera()o n)o afeta a vari/vel original. Exemplo: $unction mais02&numero3 9 &numero <= 0; : &a = ); mais02&a3; //&a continua +alendo ) Co e!emplo acima" como a passagem de parMmetros 1 por valor" a fun()o mais@ 1 inGtil" -/ que ap7s a e!ecu()o sair da fun()o o valor anterior da vari/vel 1 recuperado. Se a passagem de valor fosse feita por refer+ncia" a vari/vel Wa teria L como valor. . que ocorre normalmente 1 que ao ser c#amada uma fun()o" o interpretador salva todo o escopo atual" ou se-a" os conteGdos das vari/veis. Se uma dessas vari/veis for passada como parMmetro" seu conteGdo fica preservado" pois a fun()o ir/ trabal#ar na verdade com uma c7pia da vari/vel.R Por1m" se a passagem de parMmetros for feita por refer+ncia" toda altera()o que a fun()o reali,ar no valor passado como parMmetro afetar/ a vari/vel que o cont1m. H/ duas maneiras de fa,er com que uma fun()o ten#a parMmetros passados por refer+ncia indicando isso na declara()o da fun()o" o que fa, com que a passagem de parMmetros sempre se-a assim' e tamb1m na pr7pria c#amada da fun()o. Cos dois casos utili,a8se o modificador $g&. *e-amos um e!emplo que ilustra os dois casos $unction mais02J&num'7 &num(3 9 &num' <= 0; &num( <= 0; : &a = &, = '; mais02&a7 &,3; / Keste caso7 sL &num' ter" seu +alor alterado7 pois a passagem por re$erMncia est" de$inida na declaraFBo da $unFBo4 / mais02&a7 J&,3; / 8#ui as duas +ari"+eis terBo seus +alores alterados4 / +rgumentos com valores pr*definidos 1default2 :m PHP 1 poss;vel ter valores default para argumentos de fun(<es" ou se-a" valores que ser)o assumidos em caso de nada ser passado no lugar do argumento. Nuando algum parMmetro 1 declarado desta maneira" a passagem do mesmo na c#amada da fun()o torna8se opcional. $unction teste2&php = testando3 9 echo &php; : teste23; // imprime testando teste2outro teste3; // imprime outro teste a bom lembrar que quando a fun()o tem mais de um parMmetro" o que tem valor default deve ser declarado por Gltimo $unction teste2&$igura = circulo7 &cor3 9 echo a $igura um 4 &$igura4 de cor &cor; : teste2a/ul3; / 8 $unFBo nBo +ai $uncionar da maneira esperada7 ocorrendo um erro no interpretador4 8 declaraFBo correta : / $unction teste(2&cor7 &$igura = circulo3 9 echo a $igura um 4 &$igura4 de cor &cor; : teste(2a/ul3; / 8#ui a $unFBo $unciona da maneira esperada7 ou seAa7 imprime o texto: a $igura um cNrculo de cor a/ul / Contexto . conte!to 1 o con-unto de vari/veis e seus respectivos valores num determinado ponto do programa. Ca c#amada de uma fun()o" ao iniciar a e!ecu()o do bloco que cont1m a implementa()o da mesma 1 criado um novo conte!to" contendo as vari/veis declaradas dentro do bloco" ou se-a" todas as vari/veis utili,adas dentro daquele bloco ser)o eliminadas ao t1rmino da e!ecu()o da fun()o. ,scopo . escopo de uma vari/vel em PHP define a por()o do programa onde ela pode ser utili,ada. Ca maioria dos casos todas as vari/veis t+m escopo global. :ntretanto" em fun(<es definidas pelo usu/rio um escopo local 1 criado. Bma vari/vel de escopo global n)o pode ser utili,ada no interior de uma fun()o sem que #a-a uma declara()o. Exemplo: &php = Oestando; $unction Oeste23 9 echo &php; : Oeste23; . trec#o acima n)o produ,ir/ sa;da alguma" pois a vari/vel Wp#p 1 de escopo global" e n)o pode ser referida num escopo local" mesmo que n)o #a-a outra com nome igual que cubra a sua visibilidade. Para que o script funcione da forma dese-ada" a vari/vel global a ser utili,ada deve ser declarada. Exemplo: &php = Oestando; $unction Oeste23 9 glo,al &php; echo &php; : Oeste23; Bma declara()o $global& pode conter v/rias vari/veis" separadas por v;rgulas. Bma outra maneira de acessar vari/veis de escopo global dentro de uma fun()o 1 utili,ando um array pr18definido pelo PHP cu-o nome 1 WO3.BA3S. . ;ndice para a vari/vel referida 1 o pr7prio nome da vari/vel" sem o caracter W. . e!emplo acima e o abai!o produ,em o mesmo resultado Exemplo: &php = ?Oestando?; $unction Oeste23 9 echo &PQRS8QT5?php?6; // imprime &php echo &php; // nBo imprime nada : Oeste23; $. %ari&eis O modificador static Bma vari/vel est/tica 1 vis;vel num escopo local" mas ela 1 iniciali,ada apenas uma ve, e seu valor n)o 1 perdido quando a e!ecu()o do script dei!a esse escopo. *e-a o seguinte e!emplo $unction Oeste23 9 &a = .; echo &a; &a<<; : . Gltimo comando da fun()o 1 inGtil" pois assim que for encerrada a e!ecu()o da fun()o a vari/vel Wa perde seu valor. 5/ no e!emplo seguinte" a cada c#amada da fun()o a vari/vel Wa ter/ seu valor impresso e ser/ incrementada $unction Oeste23 9 static &a = .; echo &a; &a<<; : . modificador static 1 muito utili,ado em fun(<es recursivas" -/ que o valor de algumas vari/veis precisa ser mantido. :le funciona da seguinte forma . valor das vari/veis declaradas como est/ticas 1 mantido ao terminar a e!ecu()o da fun()o. Ca pr7!ima e!ecu()o da fun()o" ao encontrar novamente a declara()o com static" o valor da vari/vel 1 recuperado. :m outras palavras" uma vari/vel declarada como static tem o mesmo $tempo de vida& que uma vari/vel global" por1m sua visibilidade 1 restrita ao escopo local em que foi declarada e s7 1 recuperada ap7s a declara()o. :!emplo $unction Oeste23 9 echo ?&a?; static &a = .; &a<<; : . e!emplo acima n)o produ,ir/ sa;da alguma. Ca primeira e!ecu()o da fun()o" a impress)o ocorre antes da atribui()o de um valor 6 fun()o e" portanto o conteGdo de Wa 1 nulo (string va,ia). Cas e!ecu(<es seguintes da fun()o %este() a impress)o ocorre antes da recupera()o do valor de &a e" portanto nesse momento seu valor ainda 1 nulo. Para que a fun()o retorne algum valor o modificador static deve ser utili,ado. /ari!veis /ari!veis . PHP tem um recurso con#ecido como vari/veis vari/veis" que consiste em vari/veis cu-os nomes tamb1m s)o vari/veis. Sua utili,a()o 1 feita atrav1s do duplo cifr)o (WW). &a = teste; &&a = Uauricio Vi+as; R exemplo acima e e#ui+alente ao seguinte: &a = teste; &teste = Uauricio Vi+as; /ari!veis enviadas pelo navegador Para interagir com a navega()o feita pelo usu/rio" 1 necess/rio que o PHP possa enviar e receber informa(<es para o softEare de navega()o. A maneira de enviar informa(<es" como -/ foi visto anteriormente" geralmente 1 atrav1s de um comando de impress)o" como o ec#o. Para receber informa(<es vindas do navegador atrav1s de um linU ou um formul/rio #tml o PHP utili,a as informa(<es enviadas atrav1s da BR3. Por e!emplo se seu script p#p est/ locali,ado em http://localhost/teste4php) e voc+ o c#ama com a url http://localhost/teste4php)?php=teste" automaticamente o PHP criar/ uma vari/vel com o nome Wp#p contendo a string $teste&. Cote que o conteGdo da vari/vel est/ no formato urlencode. .s formul/rios #tml -/ enviam informa(<es automaticamente nesse formato" e o PHP decodifica sem necessitar de tratamento pelo programador. 34#encode . formato urlencode 1 obtido substituindo os espa(os pelo caracter $f& e todos os outros caracteres n)o alfa8num1ricos (com e!ce()o de $`&) pelo caracter $l& seguido do c7digo AS4AA em #e!adecimal. Por e!emplo o te!to $%estando I Q H jj& em urlencode fica $%estandofIfQfHflQIlQI& . PHP possui duas fun(<es para tratar com te!to em urlencode. Seguem suas sinta!es string urlencode2string texto3; string urldecode2string texto3; :ssas fun(<es servem respectivamente para codificar ou decodificar um te!to passado como argumento. Para entender mel#or o que 1 um argumento e como funciona uma fun()o" leia o t7pico $fun(<es&. /ari!veis de ambiente . PHP possui diversas vari/veis de ambiente" como a &WXW@TEQY" por e!emplo" que cont1m o nome e o pat# do pr7prio arquivo. Algumas outras cont1m informa(<es sobre o navegador do usu/rio" o servidor #ttp" a vers)o do PHP e diversas informa(<es. Para ter uma listagem de todas as vari/veis e constantes de ambiente e seus respectivos conteGdos" deve8se utili,ar a fun()o phpin$o234 /erificando o tipo de uma vari!vel Por causa da tipagem dinMmica utili,ada pelo PHP" nem sempre 1 poss;vel saber qual o tipo de uma vari/vel em determinado instantes n)o contar com a a-uda de algumas fun(<es que a-udam a verificar isso. A verifica()o pode ser feita de duas maneiras Funo *ue retorna o ti$o da "ari+"el :sta fun()o 1 a gett%pe. Sua assinatura 1 a seguinte string gett%pe2mixed +ar3; A palavra $mi!ed& indica que a vari/vel var pode ser de diversos tipos. A fun()o gett%pe pode retornar as seguintes strings integer7 dou,le7 string7 arra%7 o,Aect e unCno;n t%pe4 Fun,es *ue testam o ti$o da "ari+"el S)o as fun(<es is@int7 is@integer7 is@real7 is@long7 is@$loat7 is@string7 is@arra% e is@o,Aect. %odas t+m o mesmo formato" seguindo modelo da assinatura a seguir int is@integer2mixed +ar3; %odas essas fun(<es retornam true se a vari/vel for daquele tipo" e $alse em caso contr/rio. Destruindo uma vari!vel a poss;vel desalocar uma vari/vel se ela n)o for usada posteriormente atrav1s da fun()o unset" que tem a seguinte assinatura int unset2mixed +ar3; A fun()o destr7i a vari/vel" ou se-a" libera a mem7ria ocupada por ela" fa,endo com que ela dei!e de e!istir. Se mais na frente for feita uma c#amada / vari/vel" ser/ criada uma nova vari/vel de mesmo nome e de conteGdo va,io" a n)o ser que a c#amada se-a pela fun()o isset. Se a opera()o for bem sucedida" retorna true. /erificando se uma vari!vel possui um valor :!istem dois tipos de teste que podem ser feitos para verificar se uma vari/vel est/ setada com a fun()o isset e com a fun()o empt%. ' (un")o isset Possui o seguinte prot7tipo int isset2mixed +ar3; : retorna true se a vari/vel estiver setada (ainda que com uma string va,ia ou o valor ,ero)" e $alse em caso contr/rio. ' (un")o empt* Possui a seguinte assinatura int empt%2mixed +ar3; : retorna true se a vari/vel n)o contiver um valor (n)o estiver setada) ou possuir valor S (,ero) ou uma string va,ia. 4aso contr/rio" retorna $alse. +rra)s 5ultidimensionais Arrays multidimensionais s)o arrays simples com um dos (ou todos) seus elementos sendo outro array e assim consecutivamente. :!emplo W4ampeaom@o ] IQH0@XRLJ ' W%ricampeaom$casa&o ] W4ampeao' W%ricampeaom$predio&o ] IJIJIJIJ' WBrasilmIo ] W%ricampeao' WBrasilmQo ] $Bicampeao&' WBrasilm$copa&o ] W%ricampeao' WBrasilm0o ] $%etracampeao&' WBrasilm$mundo&o ] $Pentacampeao&' ec#o W4ampeaom@o' 99 resultar/ IQH0@XRLJ Array simples ec#o WBrasilmIom$casa&om@o ' 99 resultar/ IJIJIJIJ Array tridimensional ec#o W%ricampeaom$casa&om@o' 99 resultar/ IQH0@XRLJ Array bidimensional ec#o WBrasilm$copa&om$predio&o' 99 resultar/ IJIJIJIJ Array bidimensional
-. )lasses e #b.etos "lasse Bma classe 1 um con-unto de vari/veis e fun(<es relacionadas a essas vari/veis. Bma vantagem da utili,a()o 1 poder usufruir o recurso de encapsulamento de informa()o. 4om o encapsulamento o usu/rio de uma classe n)o precisa saber como ela 1 implementada" bastando para a utili,a()o con#ecer a interface" ou se-a" as fun(<es dispon;veis. Bma classe 1 um tipo e" portanto n)o pode ser atribu;da a uma vari/vel. Para definir uma classe" deve8se utili,ar a seguinte sinta!e class Kome@da@classe 9 +ar &+aria+el'; +ar &+aria+el(; $unction $uncao' 2&parDmetro3 9 / === corpo da $unFBo === / : : Ob$eto 4omo foi dito anteriormente" classes s)o tipos" e n)o podem ser atribu;das a vari/veis. *ari/veis do tipo de uma classe s)o c#amadas de ob-etos" e devem ser criadas utili,ando o operador ne;" seguindo o e!emplo abai!o &+ari"+el = ne; &nome@da@classe; Para utili,ar as fun(<es definidas na classe" deve ser utili,ado o operador - >" como no e!emplo &+ari"+el->$uncao'23; + vari!vel 6t7is Ca defini()o de uma classe" pode8se utili,ar a vari/vel &this" que 1 o pr7prio ob-eto. Assim" quando uma classe 1 instanciada em um ob-eto" e uma fun()o desse ob-eto na defini()o da classe utili,a a vari/vel &this" essa vari/vel significa o ob-eto que estamos utili,ando. 4omo e!emplo da utili,a()o de classes e ob-etos" podemos utili,ar a classe conta" que define uma conta banc/ria bastante simples" com fun(<es para ver saldo e fa,er um cr1dito. class conta 9 +ar &saldo; $unction saldo23 9 return &this->saldo; : $unction credito2&+alor3 9 &this->saldo <= &+alor; : : &minhaconta = ne; conta; &minhaconta->saldo23; // a +ari"+el interna nBo $oi // iniciali/ada7 e nBo contm // +alor algum &minhaconta->credito20.3; &minhaconta->saldo23; // retorna 0. Sub"lasses Bma classe pode ser uma e!tens)o de outra. Asso significa que ela #erdar/ todas as vari/veis e fun(<es da outra classe" e ainda ter/ as que forem adicionadas pelo programador. :m PHP n)o 1 permitido utili,ar #eran(a mGltipla" ou se-a" uma classe pode ser e!tens)o de apenas uma outra.Para criar uma classe e!tendida" ou derivada de outra" deve ser utili,ada a palavra reservada extends" como pode ser visto no e!emplo seguinte class no+aconta extends conta 9 +ar № $unction numero23 9 return &this->numero; : : A classe acima 1 derivada da classe conta" tendo as mesmas fun(<es e vari/veis" com a adi()o da vari/vel &numero e a fun()o numero23. "onstrutores Bm construtor 1 uma fun()o definida na classe que 1 automaticamente c#amada no momento em que a classe 1 instanciada (atrav1s do operador ne;). . construtor deve ter o mesmo nome que a classe a que pertence. *e-a o e!emplo class conta 9 +ar &saldo; $unction conta 23 9 &this4saldo = .; : $unction saldo23 9 return &this->saldo; : $unction credito2&+alor3 9 &this->saldo <= &+alor; : : Podemos perceber que a classe conta agora possui um construtor" que iniciali,a a vari/vel &saldo com o valor S. Bm construtor pode conter argumentos" que s)o opcionais" o que torna esta ferramenta mais poderosa. Co e!emplo acima" o construtor da classe conta pode receber como argumento um valor" que seria o valor inicial da conta. *ale observar que para classes derivadas" o construtor da classe pai n)o 1 automaticamente #erdado quando o construtor da classe derivada 1 c#amado. 1/. P0P a"anado 8nteragindo com o bro9ser PHP tamb1m permite interagir com informa(<es do broEser automaticamente. Por e!emplo" o script a seguir mostra informa(<es sobre o broEser do usu/rio. <html> <head><title>8prendendo WXW</title></head> <,od%> <? echo &XOOW@ZTE[@8PEKO; ?> </,od%> </html> :sse c7digo em um Anternet :!plorer X.S com sistema operacional =indoEs JL" geraria 2o,illa90.S (compatible' 2SA: X.S' =indoEs JL) <html> <head><title>8prendendo WXW</title></head> <,od%> <? i$ 2strpos2&XOOW@ZTE[@8PEKO7?UT!E3 G= .3 9 echo ?VocM usa !nternet Explorer?; : else 9 echo ?VocM nBo usa !nternet Explorer?; : ?> </,od%> </html> Ceste e!emplo" ser/ apenas e!ibido um te!to informando se est/ sendo utili,ado o 2icrosoft Anternet :!plorer ou n)o" mas para outras fun(<es poderia ser utili,ado algo semel#ante. a bom notar o surgimento de mais uma fun()o no c7digo anterior strpos2string'7string(3. :ssa fun()o retorna a posi()o da primeira apari()o de stringQ em stringI" contando a partir de ,ero" e n)o retorna valor algum se n)o ocorrer. Assim" para testar se a string &XOOW@ZTE[@8PEKO cont1m a string UT!E" basta testar se strpos devolve algum valor. 3tili:ando formul!rios HT5# Ao clicar num bot)o $Submit& em um formul/rio H%23 as informa(<es dos campos ser)o enviadas ao servidor especificado para que possa ser produ,ida uma resposta. . PHP trata esses valores como vari/veis" cu-o nome 1 o nome do campo definido no formul/rio. . e!emplo a seguir mostra isso" e mostra tamb1m como o c7digo PHP pode ser inserido em qualquer parte do c7digo H%23 <html> <head><title>8prendendo WXW</title></head> <,od%> <?php i$ 2&texto G= ??3 echo ?VocM digitou \?&texto\?<,r><,r>?; ?> <$orm method=post action=?<? echo &W8OX@!KYR; ?>?> <input t%pe=?text? name=?texto? +alue=?? si/e='.> <,r> <input t%pe=?su,mit? name=?su,? +alue=?En+iarG?> </$orm> </,od%> </html> Ao salvar o arquivo acima e carreg/8lo no broEser" o usu/rio ver/ apenas um formul/rio que cont1m um espa(o para digitar o te!to. Ao digitar um te!to qualquer e submeter o formul/rio" a resposta" que 1 o mesmo arquivo PHP (indicado pela constante WPA%H`AC>." que retorna o nome do arquivo) e!ibir/ a mensagem d*oc+ digitou ZZmensagem\\d. Asso ocorre porque o c7digo PHP testa o conteGdo da vari/vel Wte!to. Anicialmente ele 1 uma string va,ia" e por isso nada 1 impresso na primeira parte. Nuando algum te!to 1 digitado no formul/rio e submetido" o PHP passa a trat/8lo como uma vari/vel. 4omo no formul/rio o campo possui o nome $te!to&" a vari/vel com seu conteGdo ser/ Wte!to. Assim" no pr7!imo teste o valor da vari/vel ser/ diferente de uma string va,ia" e o PHP imprime um te!to antes do formul/rio. "oo;ies 4ooUies s)o mecanismos para arma,enar e consultar informa(<es nos broEsers dos visitantes da p/gina. . PHP atribui cooUies utili,ando a fun()o setcooUie" que deve ser utili,ada antes da tag Z#tml\ numa p/gina. . uso de cooUies n)o 1 recomendado quando se trata de informa(<es sigilosas. .s dados dos cooUies s)o arma,enados no diret7rio de arquivos tempor/rios do visitante" sendo facilmente visuali,ado por pessoas mal intencionadas. Al1m da op()o $aceitar cooUies& que pode ser desativada a qualquer momento pelo visitante. Para uma transmiss)o de dados segura 1 recomend/vel o uso de sess<es(ver adiante). SetcooUie($nome`do`cooUie&"&seu`valor&"&tempo`de`vida&"&pat#&"&dom;nio&"&cone!)o`s egura&) Come`do`cooUie ] a o nome que" posteriormente" se tornar/ a vari/vel e o que o servir/ de refer+ncia para indicar o cooUie. Seu`valor ] a o valor que a vari/vel possuir/. :sse valor pode ser de todos os tipos. %empo`de`vida ] a o tempo" em segundos" que o cooUie e!istir/ no computador do visitante. Bma ve, e!cedido esse pra,o o cooUie se apaga de modo irrecuper/vel. Se esse argumento ficar va,io" o cooUie se apagar/ quando o visitante fec#ar o broEser. Pat# ] endere(o da p/gina que gerou o cooUie F autom/tico ?om;nio ] dom;nio ao qual pertence o cooUie F autom/tico 4one!)o`segura ] Andica se o cooUie dever/ ser transmitido somente em uma cone!)o segura H%%PS. Sess&o Sess<es s)o mecanismos muito parecidos com os tradicionais cooUies. Suas diferen(as s)o que sess<es s)o arma,enadas no pr7prio servidor e n)o e!piram a menos que o programador queira apagar a sess)o. :!istem algumas fun(<es que controlam sess<es e est)o detal#adas no cap;tulo $IQ.Bibliotecas de fun(<es&. Aqui est)o as fun(<es de sess)o mais usadas. Come da fun()o Argumentos Session`start() C)o precisa de argumento Session`register() A vari/vel sem o cifr)o Session`unregister() A vari/vel sem o cifr)o Session`is`registered() A vari/vel sem o cifr)o . session`destroy() s7 deve ser usado quando for da vontade do programador acabar com todos as sess<es daquele visitante" portanto muito cuidado com essa fun()o. 4equire A fun()o require p<e o conteGdo de um outro arquivo no arquivo p#p atual" antes de ser e!ecutado. Nuando o interpretador do PHP ler este arquivo" ele encontrar/ todo o conteGdo dos $requireKs& adicionado no arquivo corrente. Require($nomedoarquivo&)' 4riando o #/bito de usar essa fun()o" o programador pode vir a encontrar um erro de arquivo -/ declarado. Para evitar isso 1 recomend/vel que sempre que a fun()o require for utili,ada ela se-a substitu;da pela fun()o require`once. Require`once($nome`do`arquivo$)' 8nclude A fun()o Anclude 1 semel#ante 6 fun()o require" com a diferen(a que o c7digo do arquivo inclu;do 1 processado em tempo de e!ecu()o" permitindo que se-am usados $includes& dentro de estruturas de controle como for e E#ile. Warqs ] array(paI.ince"eaQ.ince"eaH.ince) ' for (Wi]S'WiZcount(Warqs)' Wiff)^ include(WarqsmWio)' _ if (W! ]] Wy)^ include(WarquivoI)' _ else^ include(WarquivoQ)' _ 9k Cote que quando se utili,a a fun()o include ?entro de estruturas 1 necess/rio a utili,a()o das c#aves k9 <ormul!rios +vanados . PHP tamb1m entende as matri,es em forma de vari/veis vindas de um formul/rio. :!emplo Zform action]&matri,es.p#p& met#od]$P.S%&\ Come Zinput type]&te!t& name]dadosmnomeo\Zbr\ :mail Zinput type]&te!t& name]dadosmemailo\Zbr\ :sportes de prefer+ncia Zbr\ Zselect multiple name]&esportesmo&\ Zoption value]&futebol&\>utebolZ9option\ Zoption value]&vqlei&\*qleiZ9option\ Z9select\Zbr\ Zinput type]&submit& value]&enviar&\ Z9form\ ?epois de enviado" os campos se tornar)o vari/veis e campos como este $dadosmnomeo& se transformar)o em arrays que n)o dei!am de ser vari/veis. +rquivos 4emotos Cas fun(<es que trabal#am com arquivos" 1 poss;vel utili,ar BR3s para acessar arquivos em outros servidores na =eb ou no pr7prio servidor. As fun(<es aqui utili,adas ser)o detal#adas mais 6 frente no cap;tulo $Biblioteca de >un(<es&. :!emplo 1endo Wf ] fopen($#ttp99EEE.p#p.net&"&r&)' if (jWf)^ ec#o $:rro ao abrir a BR3.Zbr\&' e!it' _ E#ile (jfeof(Wf))^ Ws ] fgets(Wf"Q@X)' ec#o Ws' _ fclose(Wf)' 2scre"endo Wf ] fopen($ftp99usersen#a@site&"&E&)' if (jWf)^ ec#o $:rro ao abrir a BR3.Zbr\&' e!it' _ else^ fputs(Wf"&te!to a ser escrito&)' fputs(Wf"&mais te!to a ser escrito&)' fputs(Wf"&mais te!to a ser escrito&)' fputs(Wf"&mais te!to a ser escrito&)' fputs(Wf"&mais te!to a ser escrito&)' fclose' _ Tratamento de erros :!istem quatro tipos(at1 a vers)o 0.S) de erros no PHP para indicar a gravidade do erro encontrado ou ocorrido. :les s)o :rros de fun(<es (function errors) Avisos (Earnings) :rros de processamento (parser error) .bserva(<es (notice) As mensagens de erro s)o uma coisa com que os programadores devem prestar muita aten()o" afinal nen#um programador quer por no ar um sistema que quando o primeiro visitante entra apare(a uma mensagem de erro. Para evitar essas inconveni+ncias use sempre um $@& antes da cada c#amada as fun(<es. Se a op()o tracU`errors no arquivo p#p.ini estiver #abilitada" a mensagem de erro poder/ ser encontrada na vari/vel global Wp#p`errormsg. A c#amada da fun()o ficaria assim @strtoloEer()' :ssa fun()o dei!aria todos os caracteres em minGsculo" mas como n)o foi passado nen#um argumento essa fun()o deveria e!ibir uma mensagem de erro.
11.S31 O que ? ?e acordo com AndreE %aylor" inventor original da linguagem SN3" o SN3 n)o significa $Structured Nuery language& (ou qualquer outra coisa nesse sentido). 2as para o resto do mundo" esse 1 seu significado agora. 4omo voc+ poderia esperar desse (n)o8)t;tulo" o SN3 representa um m1todo mais geral e mais estrito de arma,enamento de dados que o padr)o anterior de banco de dados n)o8relacionais no estilo dbm. SN3 n)o 1 ci+ncia espacial. As quatro instru(<es b/sicas de manipula()o de dados suportadas essencialmente por todos os bancos de dados de SN3 s)o S:3:4%" ACS:R%" BP?A%: e ?:3:%:. S:3:4% recupera os dados do banco de dados" ACS:R% insere em uma nova entrada" BP?A%: edita partes da entrada no lugar e ?:3:%: e!clui uma entrada completamente. A maior parte da dificuldade reside em pro-etar bancos de dados. . pro-etista deve pensar muito seriamente sobre a mel#or maneira de representar cada parte de dados e relacionamento para a utili,a()o plane-ada. a um pra,er programar com bancos de dados bem pro-etados" enquanto os pobremente pro-etados podem dei!ar voc+ careca quando contemplar as numerosas cone!<es e #orrorosas -un(<es. .s bancos de dados SN3 s)o criados pelas c#amadas instru(<es de estrutura de dados. As mais importantes s)o 4R:A%:" A3%:R e ?R.P. 4omo se poderia imaginar" 4R:A%: ?A%ABAS: cria um novo banco de dados e 4R:A%: %AB3: define uma nova tabela dentro de um banco de dados. A3%:R altera a estrutura de uma tabela. ?R.P 1 a bomba nuclear entre os comandos de SN3" uma ve, que e!clui completamente tabelas ou banco de dados inteiros. . bom pro-eto de banco de dados tamb1m 1 uma quest)o de seguran(a. :mpregando medidas profil/ticas ra,o/veis" um banco de dados SN3 pode aprimorar a seguran(a de seu site. :sta apostila e!plicar/ somente o b/sico de SN3. S,#,"T S:3:4% 1 o comando principal de que voc+ precisa para obter informa(<es fora de um banco de dados de SN3. A sinta!e b/sica 1 e!tremamente simples S:3:4% campoI" campoQ" campoH >R.2 tabela =H:R: condi(<es :m alguns casos" voc+ dese-ar/ pedir lin#as inteiras em ve, de selecionar partes individuais de informa(<es. :ssa pr/tica 1 obsoleta por ra,<es muito boas(ela pode ser mais lenta que solicitar apenas os dados de que voc+ precisa e pode levar a problemas se voc+ repro-etar a tabela) " mas ainda 1 utili,ada e" portanto" precisamos menciona8la. Bma lin#a inteira 1 indicada utili,ando o s;mbolo do asteristico S:3:4% k >R.2 min#a`tabela =H:R: campoI ] $abcdef& Subsele,es Antes de dei!armos o reino das instru(<es S:3:4%" devemos mencionar a subsele()o. :ssa 1 uma instru()o como S:3:4% p#one`number >R.2 table =H:R: name ] pS:3:4% name >R.2 tableQ =H:R: id ] Ie' As subsele(<es s)o mais uma conveni+ncia que uma necessidade. :las podem ser muito Gteis se voc+ estiver trabal#ando com enormes lotes de dados' mas 1 poss;vel obter o mesmo resultado com duas sele(<es mais simples(embora isso ser/ algo mais lento" mesmo no PHP0). 8S,4T . comando que voc+ precisa para colocar novos dados em um banco de dados 1 o ACS:R%. :is a sinta!e b/sica ACS:R% AC%. tabela (campoI"campoQ"campoH) *A3B:S(WvalI"WvalQ"WvalH)' .bviamente as colunas e seus valores devem corresponder' se voc+ misturar os seus itens de array" nada de bom acontecer/. Se algumas lin#as n)o tiverem valores para alguns campos" voc+ precisar/ utili,ar um valor nulo" va,io ou auto8incrementado F e" em um n;vel mais profundo" voc+ pode ter assegurado de antem)o que os campos possam ser nulos ou auto8increment/veis. Se isso n)o for poss;vel" voc+ simplesmente deve omitir qualquer coluna que voc+ dese-a que assuma o padr)o de valor va,io em uma instru()o de ACS:R%. Bm desdobramento da instru()o ACS:R% b/sica 1 ACS:R% AC%.... S:3:4%. Asso apenas significa que voc+ pode inserir os resultados de uma instru()o S:3:4% ACS:R% AC%. customer(birt#mont#" birt#floEer" birt#stone) S:3:4% k >R.2 birt#day`info =H:R: birt#mont# ] Wbirt#mont#' :ntretanto" nem todos os bancos de dados de SN3 t+m essa capacidade. Al1m disso" 1 preciso ser cuidadoso com esse comando porque voc+ pode facilmente causar problemas para voc+ mesmo. :m geral" n)o 1 uma boa id1ia selecionar a partir do mesmo banco de dados em que voc+ esta inserindo. 3PD+T, BP?A%: 1 utili,ado para editar informa(<es que -/ est)o no banco de dados sem e!cluir qualquer quantidade significativa. :m outras palavras" voc+ pode seletivamente alterar algumas informa(<es sem e!cluir um registro antigo inteiro e inserir um novo. A sinta!e 1 BP?A%: table S:% campoI ] $valI&" campoQ ] $valQ&"campoH]&valH& =H:R: condi()o' A instru()o condicional 1 e!atamente como uma condi()o S:3:4%" como =H:R: id]I@ ou =H:R: gender]&>&. D,#,T, ?:3:%: 1 bastante auto8e!plicativa voc+ a utili,a para e!cluir permanentemente as informa(<es do banco de dados. A sinta!e 1 ?:3:%: datapoint >R.2 table =H:R: condition' A coisa mais importante a lembrar8se 1 da condi()o F se voc+ n)o configurar uma" e!cluir/ cada entrada nas colunas especificadas do banco de dados" sem uma confirma()o ou uma segunda c#ance em muitos casos. O que 7! em comum entre= D,#,T, ' 3PD+T, *oc+ deve lembrar8se de utili,ar uma condi()o toda ve, que atuali,ar ou e!cluir. Se voc+ n)o fi,er isso" todas as lin#as na tabela sofrer)o a mesma altera()o ou e!clus)o. 2esmo os programadores mais e!perientes esquecem a condi()o" para seu grande constrangimento profissional. 4uidado para n)o esquecer a condi()o. "4,+T, 4R:A%: 1 utili,ado para fa,er uma tabela ou banco de dados completamente novo. Realmente criar um banco de dados implica um pouco mais que apenas atribuir um nome. 4R:A%: ?A%ABAS: db`name' %odo o trabal#o est/ em definir as tabelas e as colunas. Primeiro voc+ declara o nome da tabela e depois deve detal#ar os tipos espec;ficos de colunas dessa tabela no que 1 c#amado de $defini()o de cria()o&. 4R:A%: %AB3: table ^ 8\id`col AC% C.% CB33 AB%.`AC4R:2:C% PRA2ARr P:r" 8\colI %:D% CB33 AC?:D" 8\colQ ?A%: C.% CB33 _' ?iferentes servidores de SN3 t+m tipos de dados e op(<es de defini()o ligeiramente diferentes" ent)o a sinta!e de um n)o pode transferir e!atamente para outro. D4OP ?R.P pode ser utili,ado para e!cluir completamente uma tabela ou banco de dados e todos os seus dados associados. :le n)o 1 um comando mais sutil ?R.P %AB3: table' ?R.P ?A%ABAS: db`name .bviamente 1 necess/rio muito cuidado com essa instru()o. +#T,4 A3%:R 1 a maneira de alterar uma estrutura da tabela. *oc+ simplesmente indica que tabela est/ alterando e redefine suas especifica(<es. Covamente" eis os produtos SN3 diferem na sutile,a. A3%:R %AB3: table R:CA2: AS neE`table' A3%:R %AB3: neE`table A?? 4.3B2C colH *AR4HAR(@S) ' A3%:R %AB3: neE`table ?R.P 4.3B2C colQ' 14. 'ancos de dados com$at5"eis com o P0P6 .s bancos de dados atualmente suportados pelo PHP s)o Adabas D, dBase, mSQL, InterBase, SyBase, Empress, MySQL, Velocis, FilePro, racle, dbm, In!ormix, Post"reSQL. 17. 'iblioteca de Fun,es Ceste cap;tulo n)o est)o detal#adas todas as fun(<es do PHP" mas grande parte das fun(<es mais utili,adas est)o detal#adas neste cap;tulo. %ibliotecas requeridas Para que se possa utili,ar essas fun(<es 1 preciso ter instalado" no servidor" as seguintes bibliotecas 27dulo do PHP .nde encontrar 3?AP ftp99ftp.openldap.org9pub9openldap9 ftp99terminator.rs.itd.umic#.edu9ldap9 ftp99ftp.critical8angle.com9pub9cai9slapd9 BerUley ?BQ #ttp99EEE.sleepycat.com9 SC2P #ttp99EEE.ece.ucdavis.edu9ucd8snmp9 O? #ttp99EEE.boutell.com9gd9bbuildgd mSN3 #ttp99EEE.#ug#es.com.au9 2ySN3 #ttp99EEE.mysql.com9 A2AP ftp99ftp.cac.Eas#ington.edu9imap9 >ree%ype (libttf) #ttp99EEE.freetype.org Tlib #ttp99EEE.cdrom.com9pub9info,ip9,lib :!pat D23 parser #ttp99EEE.-clarU.com9!ml9e!pat.#tml P?>lib #ttp99EEE.ifconnection.de9Ytm9 mcrypt ftp99argeas.cs8net.gr9pub9uni!9mcrypt9 m#as# #ttp99sasEeb.de9m#as#9 tIlib #ttp99EEE.neuroinformatiU.ru#r8uni8 boc#um.de9ini9P:.P3:9rm,9tIlib.#tml ?malloc #ttp99EEE.dmalloc.com9 Aspell #ttp99metalab.unc.edu9Uevina9aspell9 +rra) Arra Retorna um array de parMmetros. sndices podem ser atribu;dos aos parMmetros atrav1s do operador. Array array(...)' :!emplo Warr ] array($palavras& ]\ array($I& ]\ $inde!&"&Q& ]\ $main$"&H& ]\ $default&)"&tradu()o& ]\ array($;ndice&"&principal&"&padr)o&) )' arra8(es 9P0P:; Retorna os ;ndices de um array. Array array`Ueys(array matri,)' Arra8merge 9P0P:; Retorna um array resultante da concatena()o de dois ou mais arrays. Array array`merge(array matri,I" array matri,Q" m...o)' Arra8$o$9P0P:; Retorna e remove o ultimo elemento de um array. 2i!ed array`pop(array matri,I)' Arra8$us&9P0P:; Acrescente elementos no final de um array. Retorna o numero de elementos de uma array. Ant array`pus#(array matri,I" mi!ed elemI"m...o)' Arra8s&ift9P0P:; Retorna e remove o primeiro elemento de um array 2i!ed array`s#ift(array array)' Arra8slice9P0P:; Retorna uma seqn+ncia de elementos de um array. Array array`slice(array matri," int inicio" int mtaman#oo) ' Argumento ?escri()o 2atri, o array de onde ser)o copiados os elementos An;cio Posi()o inicial no array taman#o CGmero de elementos a serem retornados Arra8s$lice9P0P:; Remove elementos de um array e" opcionalmente" substitui os elementos removidos por outros. Array array`splice(array matri," int in;cio" int mtaman#oo" array msubstitui()oo)' Argumento ?escri()o 2atri, o array de onde ser)o copiados os elementos An;cio Posi()o inicial no array entrada %aman#o CGmero de elementos a serem removidos Substitui()o Arrays dos elementos que substituir)o os elementos removidos Arra8uns&ift9P0P:; Acrescenta elementos no in;cio de um array. Retorna o nGmero de elementos de uma array. Ant array`uns#ift(array matri," mi!ed var" m...o)' Arra8"alues9P0P:; Retorna os valores de um array Array array`values(array matri,)' Arra8%al( Aplica uma fun()o para cada elemento de um array. Ant array`EalU(array matri," string nomefunc" mi!ed dadose!tras)' >unction nomefunc(Witem" W;ndice" Wdadose!tras) :!emplo Wmatri, ] array($I&]\&monitor&"&Q&]\&Placa de v;deo&" $H&]\ $mouse&)' 99esta 1 uma das fun(<es c#amadas pelo array`EalU function imprime`item(Witem" W;ndice"Wdados)^ ec#o $W;ndice ] Witem(Wdados)&' _ 99esta 1 uma das fun(<es c#amadas pelo array`EalU function atuali,ar`item(gWitem" W;ndice" Wdados)^ Witem ] $Witem (Wdados)$' _ array`EalU(Wmatri,"eimprime`iteme"eimpressoe)' array`EalU(Wmatri,"eatuali,ar`iteme"eatuali,adoe)' array`EalU(Wmatri,"eimprime`iteme"eatuali,adoe)' Arsort .rdena um array na ordem reversa" mantendo a associa()o dos ;ndices com os elementos *oid arsort(array array)' Asort .rdena um array na ordem" mantendo a associa()o dos ;ndices com os elementos *oid asort(array array)' )om$act9P0P:; 4ria um array de vari/veis com seus valores. .s parMmetros podem ser nomes de vari/veis ou arrays com os nomes de vari/veis. Array compact(string nomevarhstring nomesvar"m...o) ' :!emplo Wdepto ] $?esenvolvimento&' Wfuncion/rio ] $5o)o >ulanin#o&' Wcargo ] $Analista de Sistemas& ' Watributos ] array($cargo&"&depto&)' Wres ] compact($funcion/rio&"&atributos&)' . c7digo acima ir/ criar o array ($funcion/rio&]\&5o)o >ulanin#o&"&cargo&]&Analista de Sistemas&"&depto&]\&?esenvolvimento&). )ount Retorna o numero de elementos em um array. Retorna I se a vari/vel n)o for um array e S se a vari/vel n)o estiver definida. Ant count(mi!ed matri,) ' )urrent Retorna o elemento corrente em um array 2i!ed current(array matri,)' 2ac& Retorna o par $elemento e valor& atual de um array" avan(ando o cursor do array para o pr7!imo item. a semel#ante a um loop !or que percorre os elementos de um array. Array eac#(array matri,) ' 2nd Aponta o indicador interno de um array para o Gltimo elemento. :nd(array matri,)' 2<tract 4onverte os pares $;ndice ]\ valor& em vari/veis $nome ]\ valor&. a o inverso da fun()o compact(). *oid e!tract(array matri," int mtipo`e!traca()oo" string mprefi!oo) ' %ipo de e!tra()o ?escri()o :D%R`.*:R=RA%: Sobrescreva as vari/veis e!istentes se #ouver colis)o :D%R`SPAP C)o sobrescreva as vari/veis se #ouver colis)o :D%R`PR:>AD`SA2: Se #ouver colis)o com as vari/veis e!istentes" coloque o prefi!o no nome da vari/vel :D%R`PR:>AD`A33 4oloque o prefi!o no nome de todas as vari/veis. In8arra9P0P:; Retorna true se texto e!istir no array matri, Bool in`array(mi!ed te!to" array matri,)' =e Retorna o elemento ;ndice da posi()o corrente de um array 2i!ed Uey(array matri,)' =sort .rdena um array pelos ;ndices" mantendo a associa()o dos ;ndices com os elementos. Ant Usort(array matri,) ' 1ist Atribui uma lista de vari/veis em apenas uma opera()o *oid list(...)' Ne<t Retorna o pr7!imo elemento de um array" ou false se n)o #ouver mais elementos. 2i!ed ne!t(array matri,)' Pos Retorna o elemento corrente de um array 2i!ed pos(array matri,)' Pre" Retorna o elemento anterior ao elemento corrente de um array ou falso se n)o #ouver mais elementos. 2i!ed prev(array matri,)' >ange Retorna um array contendo uma seqn+ncia de nGmeros inteiros no intervalo especificado. Array range(int lim`inferior" int lim`superior) ' >eset Aponta o indicador interno de um array para seu primeiro elemento. 2i!ed reset(array matri,)' >sort .rdena um array na ordem inversa *oid rsort(array matri,)' S&uffle :mbaral#a os elementos de um array *oid s#uffle(array matri,)' Si?eof Retorna o nGmero de elementos de um array. Ant si,eof(array matri,)' Sort .rdena um array *oid sort(array matri,)' @asort .rdena um array utili,ando uma fun()o definida pelo programador" mantendo a associa()o dos ;ndices. A fun()o de compara()o dever/ retornar um inteiro menor que ,ero" igual a ,ero" ou maior que ,ero" se o primeiro argumento for respectivamente menor que" igual a" ou maior que o segundo argumento. *oid uasort(array matri," function func`compara) ' @(sort .rdena um array pelos ;ndices" utili,ando uma fun()o definida pelo programador. A fun()o de compara()o dever/ retornar um inteiro menor que ,ero" igual a ,ero" ou maior que ,ero" se o primeiro argumento for respectivamente menor que" igual a" ou maior que o segundo argumento. *oid uUsort(array matri," function func`compara)' @sort .rdena um array pelos valores" utili,ando uma fun()o definida pelo programador. A fun()o de compara()o dever/ retornar um inteiro menor que ,ero" igual a ,ero" ou maior que ,ero" se o primeiro argumento for respectivamente menor que" igual a" ou maior que o segundo argumento. *oid usort(array matri," function func`compara)' 5atem!tica para n>meros inteiros 'c$o% :leva o primeiro nGmero 6 pot+ncia do segundo nGmero. . parMmetro adicional escala significa o nGmero de d;gitos ap7s o ponto decimal. String bcpoE(string !" string y" int mescalao)' 'cscale 2uda o valor padr)o do parMmetro escala para todas as fun(<es matem/ticas subseqnentes que n)o ten#am um valor definido para escala. String bcscale(int scala) Datas )&ec(date Retorna true se uma data for v/lida' caso contr/rio" retorna false Ant c#ecUdate(int m+s" int dia" int ano)' Aate Retorna uma data no formato especificado String date(string formato"intmdata#orao )' Argumento ?escri()o ?ata ?ata9#ora a ser formatada. Se n)o for especificada utili,ar/ a data9#ora corrente formato String com caracteres de formata()o de datas
4aractere Significado a $am& ou $pm& A $A2& ou $P2& d ?ia em formato num1rico. ?e $SI& a $HI&. ? ?ia da semana" te!tual" H letras. :!. $>ri& > 2+s" te!tual" formato longo. :!. &5anuary&. # Hora no formato de IQ #oras. ?e $SI& a $IQ&. H Hora no formato de Q0 #oras. ?e $SS& a $QH&. g Hora no formato de IQ #oras" sem os ,eros 6 esquerda. ?e $I& a $IQ&. O Hora no formato de Q0 #oras" sem os ,eros 6 esquerda. ?e $S& a $QH&. i 2inutos. ?e $SS& a $@J&. - ?ia do m+s sem os ,eros 6 esquerda. ?e $I& a $HI&. l ?ia da semana" te!tual" longo. :!. $>riday&. 3 Booleano que indica se o ano 1 bisse!to.&S& ou $I&. m 2+s. ?e $SI& a $IQ&. n 2+s sem ,eros 6 esquerda. ?e $I& a $IQ&. 2 2+s" te!tual" H letras. :!. $5an&. s Segundos. ?e $SS& a $@J&. S Sufi!o ordinal em ingl+s" te!tual" Q caracteres. :!. $t#$"&nd&. t CGmero de dias do m+s determinado.:!.&QL& a $HI&. B CGmero de segundos desde o $epoc#&. E ?ia da semana" num1rico. ?e $S&(domingo) a $X& (s/bado) . r Ano com 0 d;gitos. :!. $QSSQ&. y Ano com Q d;gitos. :!. $SQ&. , ?ia do ano. ?e $S& a $HX@&. T >uso #or/rio em segundos. ?e $80HQSS& a $0HQSS&. Betdate Retorna um array associativo contendo todas as informa(<es de uma data9#ora espec;fica. Array getdate(int data9#ora)' sndices da matri, retornada. $seconds& Segundos $minutes& 2inutos $#ours& Horas $mday& ?ia do m+s $Eday& ?ia da semana no formato decimal $mon& 2+s no formato decimal $year& Ano no formato decimal $yday& ?ia do ano no formato decimal $EeeUday& ?ia da semana no formato decimal $mont#& 2+s no formato te!to Bettimeofda Retorna um array associativo contendo as informa(<es da #ora corrente Array gettimeofday(void)' .s ;ndices da matri, s)o $sec& Segundos $usec& 2icrosegundos $minutesEest& 2inutos a oeste de OreenEic# $dsttime& %ipo da corre()o dst
Bmdate Retorna uma data9#ora O2% no formato BCAD. a id+ntica 6 fun()o mUtime()" e!ceto que a #ora retornada 1 a #ora de OreenEic#. String gmdate(string formato" int data#ora)' Bmm(time Retorna a data9#ora O2% no formato BCAD. a id+ntica 6 fun()o mUtime()" e!ceto que a data passada no parMmetro representa uma data O2%. Ant gmmUtime(int #ora" int minuto" int segundo" int m+s" int dia" int ano" int mdsfo)' Bmstrftime Retorna uma data9#ora O2%94B% no formato especificado. a semel#ante 6 fun()o strftime()" e!ceto que a #ora retornada 1 a #ora de OreenEic#. String gmstrftime(string formato" int data#ora)' Cicrotime Retorna uma string contendo a data9#ora atual no formato $msec sec& do BCAD" que significa o nGmero de milisegundos e depois os segundos desde o BCAD :poc#(SI9SI9IJRS SSSSSS O2%). String microtime(void)' C(time Retorna uma data9#ora no formato BCAD Ant mUtime(int #ora" int minuto" int segundo" int m+s" ine dia" int ano" int mdsfo)' Strftime Retorna uma data no formato especificado. .s nomes por e!tenso dos meses e dos dias da semana dependem da configura()o feita com a fun()o setlocale(). String strftime(string formato" int data#ora)' Argumento ?escri()o ?ata ?ata9#ora a ser formatada. Se n)o especificada" utili,ar/ a data9#ora corrente >ormato String com caracteres de formata()o de datas 4aractere Significado la ?ia da semana abreviado lA ?ia da semana completo lb Come abreviado do m+s lB Come completo do m+s lc Representa()o preferida de data e #ora ld ?ia do m+s no formato decimal (SS8HI) lH Hora no formato decimal de Q0 #oras (SS8QH) ll Hora no formato decimal de IQ #oras (SS8IQ) l- ?ia do ano no formato decimal (SSI8HXX) lm 2+s em formato decimal (I8IQ) l2 2inutos no formato decimal lp pame ou ppme" dependendo da #ora especificada lS Segundos no formato decimal lB CGmero da semana do ano atual no formato decimal" come(ando no primeiro domingo como o primeiro dia da primeira semana l= CGmero da semana do ano atual no formato decimal" come(ando na primeira segunda8feira como o primeiro dia da primeira semana lE ?ia da semana no formato decimal" sendo o domingo igual a S. l! Representa()o preferida da data" sem a #ora lD Representa()o preferida da #ora" sem a data ly Ano no formato decimal" sem o s1culo (SS8JJ) lr Ano no formato decimal" com o s1culo. lT Tona de fuso #or/rio" ou nome" ou abrevia()o. ll Bma caractere literal $l&.
Dime Retorna a data9#ora no formato BCAD" que corresponde ao nGmero de segundos desde o Bni! :poc#(SIcSIcIJRS SSSSSS O2%) Ant time(void)' Diretrio )&dir Altera o diret7rio correspondente do PHP para o diret7rio especificado. Retorna true se tiver sucesso' caso contr/rio retorna false Ant c#dir(string diret7rio)' )lasse dir a uma classe para leitura de diret7rios. . diret7rio determinado 1 aberto. :sta classe possui duas propriedades que estar)o dispon;veis ap7s a abertura do diret7rio a propriedade #andle" que pode ser usada com outras fun(<es como readdir()" reEinddir() e closedir() e a propriedade pat#" que cont1m o camin#o do diret7rio que foi aberto. %r+s m1todos est)o dispon;veis read" reEind e close. CeE dir(string diret7rio) ' )losedir :ncerra a associa()o de um identificador(#andle) com um diret7rio. *oid closedir(int #andle`dir) ' #$endir Retorna um #andle de diret7rio para ser usado nas fun(<es closedir()" readdir() e reEinddir(). Ant opendir(string diret7rio)' >eaddir Retorna o pr7!imo nome de arquivo do diret7rio" na ordem em que estiverem arma,enadas. String readdir(int #andle`dir)' >e%inddir Retorna o ponteiro 6 posi()o inicial do diret7rio *oid reEinddir(int #andle`dir)' ,'ecu&o de Programas 2sca$es&ellcmd Retira quaisquer caracteres de um string que poderiam ser utili,ados para enganar um comando S#ell para e!ecutar comandos arbitr/rios. :sta fun()o normalmente 1 usada para verificar os dados fornecidos pelo usu/rio antes de serem passados para as fun(<es e!ec() ou system(). String escapes#ellcmd(string comando)' 2<ec :!ecuta um comando e!terno e mostra a Gltima lin#a do resultado do comando. String e!ec(string comando" string marrayo" int mvari/vel`refo) ' Argumento ?escri()o 4omando 4omando e!terno a ser e!ecutado Array Array contendo as lin#as do resultado *ari/vel`ref *ari/vel que conter/ o c7digo de retorno do comando e!ecutado Passt&ru :!ecuta um comando e!terno e mostra todos os resultados. String passt#ru(string comando" int mvari/vel`refo)' Argumento ?escri()o 4omando 4omando e!terno a ser e!ecutado *ari/vel`ref *ari/vel que conter/ o c7digo de retorno do comando e!ecutado Sstem :!ecuta um comando e!terno e mostra os resultados. String system(string comando" int mvari/vel`refo)' Argumento ?escri()o 4omando 4omando e!terno a ser e!ecutado *ari/vel`ref *ari/vel que conter/ o c7digo de retorno do comando e!ecutado Sistema de arquivos do servidor 'asename Retorna o nome do arquivo em um pat#. Co EindoEs" ambos os caracteres" 9 e c" s)o usados como separadores de diret7rios. :m outros ambientes 1 utili,ado somente o caractere 9. String basename(string pat#)' )&gr$ 2uda o grupo ao qual um arquivo pertence em ambientes BCAD. :m ambientes EindoEs n)o fa, nada" retornando sempre true. Ane c#grp(string nome`do`arquivo" mi!ed grupo) ' )&mod Altera as permiss<es de um arquivo em ambientes BCAD. Retorna true em caso de sucesso' caso contr/rio" retorna false. :m ambientes EindoEs esta fun()o n)o fa, nada" sempre retornando true Ant c#mod(string nome`do`arquivo" int modo) ' Argumento ?escri()o Come`arquivo Come do arquivo 2odo . valor passado como parMmetro deve ser do tipo octal. :!. c#mod($9algumdiretorio9algumarquivo&"SR@@)' )&o%n Altera o propriet/rio de um arquivo em ambientes BCAD. Somente o root pode alterar o propriet/rio de um arquivo. Retorna true em caso de sucesso' caso contr/rio" retorna false. Co EindoEs esta fun()o na fa, nada sempre retornando true. Ant c#oEn(string nome`arquivo" mi!ed propriet/rio)' )learstatcac&e Apaga o cac#e de status dos arquivos utili,ados em tempo de e!ecu()o no PHP *oid clearstatcac#e(void)' )o$ 4opia um arquivo. Retorna true se tiver sucesso' caso contr/rio" retorna false. Ant copy(string nome`arquivo" string arquivo`destino)' Aelete Apaga um arquivo do servidor *oid delete(string nome`arquivo) ' Airname Retorna o nome de um diret7rio em um pat#. *e-a a fun()o basename(). String dirname(string pat#)' Ais(frees$ace Retorna o nGmero de bytes dispon;veis em um disco. Ant disUfreespace(string nome`arquivo)' Fclose >ec#a um arquivo. Retorna true se tiver sucesso' caso contr/rio" retorna false. Ant fclose(int fp)' Feof Retorna true caso o ponteiro de arquivo este-a no fim do arquivo ou ocorra um erro' caso contr/rio" retorna false. Ant feof(fp)' Fgetc Retorna um caractere apontado pelo ponteiro do arquivo. Retorna false se for :.>. String fgetc(int fp)' Fgetcs" 3+ uma lin#a do arquivo a partir do ponteiro e coloca em um array os campos lidos. 3in#as em branco ser)o convertidas em arrays compreendendo um Gnico campo nulo. Array fgetcsv(int fp" int taman#o" string mdelimitadoro)' Fgets Retorna uma string do arquivo a partir do ponteiro de arquivo at1 que (taman#o 8 I) bytes se-am lidos do arquivo. A leitura termina quando encontra o fim de uma lin#a ou quando o arquivo termina. String fgets(int fp" int taman#o)' Fgetss 3+ strings do arquivo como a fun()o fgets()" tirando todas as tags H%23 do te!to lido. String fgetss(int fp" int taman#o) ' File 3+ um arquivo inteiro e coloca seu conteGdo em um array. 4ada elemento do array corresponder/ a cada lin#a do arquivo lido" sem tirar qualquer informa()o. Array file(string nome`arquivo)' File8e<ists Retorna true se um determinado arquivo e!iste' caso contr/rio" retorna false. .s resultados desta fun()o s)o arma,enados e reutili,ados. Para atuali,ar esta informa()o utili,e a fun()o clearstatcac#e(). Ant file`e!ists(string nome`arquivo)' Fileatime Retorna a data9#ora do Gltimo acesso ao arquivo" ou false se ocorrer um erro. Para atuali,ar esta informa()o utili,e a fun()o clearstatcac#e(). Ant fileatime(string nome`arquivo)' Filectime Retorna a data9#ora da Gltima mudan(a do inode de um arquivo" ou false se ocorrer um erro. Para atuali,ar esta informa()o utili,e a fun()o clearstatcac#e(). Ant filectime(string nome`arquivo)' Filegrou$ Retorna o nome do grupo ao qual pertence o arquivo" ou false em caso de erro. .s resultados desta fun()o s)o arma,enadas e reutili,adas. Para utili,ar esta informa()o utili,e a fun()o clearstatcac#e(). Ant filegroup(string nome`arquivo)' Fileinode Retorna o nGmero do inode de um arquivo" ou false em caso de erro. .s resultados desta fun()o s)o arma,enadas e reutili,adas. Para utili,ar esta informa()o utili,e a fun()o clearstatcac#e(). Ant fileinode(string nome`arquivo)' Filemtime Retorna a data9#ora da Gltima altera()o de um arquivo" ou false se ocorrer um erro. Para atuali,ar esta informa()o utili,e a fun()o clearstatcac#e(). Ant filemtime(string nome`arquivo)' Fileo%ner Retorna o nGmero de A? do dono de um arquivo" ou false em caso de erro. .s resultados desta fun()o s)o arma,enadas e reutili,adas. Para utili,ar esta informa()o utili,e a fun()o clearstatcac#e(). Ant fileoEner(string nome`arquivo)' File$erms Retorna as permiss<es de um arquivo" ou false em caso de erro. .s resultados desta fun()o s)o arma,enadas e reutili,adas. Para utili,ar esta informa()o utili,e a fun()o clearstatcac#e(). Ant fileperms(string nome`arquivo)' Filesi?e Retorna o taman#o de um arquivo" ou false em caso de erro. .s resultados desta fun()o s)o arma,enadas e reutili,adas. Para utili,ar esta informa()o utili,e a fun()o clearstatcac#e(). Ant filesi,e(string nome`arquivo)' Filet$e Retorna o tipo de um arquivo. .s valores poss;veis s)o fifo" c#ar" dir" blocU" linU" file e unUnoEn. Retorna false em caso de erro. .s resultados desta fun()o s)o arma,enadas e reutili,adas. Para utili,ar esta informa()o utili,e a fun()o clearstatcac#e(). String filetype(string nome`arquivo)' Floc( Altera as op(<es de compartil#amento de um arquivo aberto" fa,endo com que todos os programas que precisem usar esse arquivo usem as mesmas op(<es de compartil#amento. Retorna true se tiver sucesso' caso contr/rio" retorna false. Bool flocU(int fp" int operacao)' Argumento ?escri()o .pera()o %ipo de opera()o I 2odo compartil#ado para leitura Q 2odo e!clusivo para escrita H 2odo livre (compartil#ado ou e!clusivo) 0 Adicione 0 para n)o bloquear o arquivo enquanto estiver alterando o modo
Fo$en Abre um arquivo ou uma BR3. A fun()o retornar/ false se ocorrer erro. Ant fopen(string nome`arquivo" string modo)' Argumento ?escri()o Come`arquivo Come do arquivo. A a()o a ser tomada depender/ de como o nome 1 iniciado. *e-a a bai!o as op(<es. $#ttp99& Abre um cone!)o H%%P I.S com o servidor especificado e um ponteiro de arquivo 1 retornado ao in;cio do te!to da resposta $ftp99& Abre um cone!)o >%P com o servidor especificado e um ponteiro de arquivo 1 retornado. . servidor deve suportar o modo passivo de >%P. a poss;vel abrir os arquivos para leitura ou para escrita" mas n)o ambos ao mesmo tempo outro Se o nome come(ar com qualquer outra coisa" o arquivo ser/ aberto no sistema de arquivos e um ponteiro de arquivo ser/ retornado. 2odo 2odo de abertura. Adicionalmente pode8se colocar a letra $b& no parMmetro modo" informando que a ser processado 1 um arquivo bin/rio $r& Somente leitura" a partir do inicio do arquivo. $rf& 3eitura e escrita" a partir do inicio do arquivo. $E& Somente escrita. A partir do inicio do arquivo e apagando todo o conteGdo do arquivo. Se o arquivo n)o e!istir" a fun()o tentar/ cri/8lo. $Ef& Para leitura e escrita. A partir do inicio do arquivo e apagando todo o conteGdo do arquivo. Se o arquivo n)o e!istir" a fun()o tentar/ cri/8lo. $a& Somente escrita. A partir do inicio do arquivo. Se o arquivo n)o e!istir" a fun()o tentar/ cri/8lo. $af& Para leitura e escrita. A partir do inicio do arquivo. Se o arquivo n)o e!istir" a fun()o tentar/ cri/8lo. F$asst&ru 3+ o conteGdo do arquivo" do ponteiro ate o fim do arquivo" mostrando os dados e fec#ando o arquivo logo em seguida. Ant passt#ru(int fp)' F$uts :screve o conteGdo de uma string em um arquivo Ant fputs(int fp" string str" int mtaman#oo)' Fread 3+ bytes de um arquivo String fread(int fp" int mtaman#oo)' Fsee( 2uda a posi()o do ponteiro de arquivo. S7 pode ser usada em arquivos do sistema de arquivos local. Retorna S se tiver sucesso' caso contr/rio" retorna FI. Ant fseeU(fp" int offset)' Ftell Retorna a posi()o do ponteiro do arquivo Ant ftell(int fp)' F%rite :screve um nGmero especifico de bytes de uma string em um arquivo Ant fErite(int fp" string str" int mnumbyteso)' Is8dir Retorna true se o nome do arquivo especificado e!istir e for um diret7rio. .s resultados desta fun()o s)o arma,enadas e reutili,adas. Para atuali,ar esta informa()o utili,e clearstatcac#e(). Bool is`dir(string nome`arquivo)' Is8e<ecutable Retorna true se o nome do arquivo especificado e!istir e for um arquivo e!ecut/vel. .s resultados desta fun()o s)o arma,enadas e reutili,adas. Para atuali,ar esta informa()o utili,e clearstatcac#e(). Bool is`e!ecutable(string nome`arquivo)' Is8file Retorna true se o nome do arquivo especificado e!istir e for um arquivo. .s resultados desta fun()o s)o arma,enadas e reutili,adas. Para atuali,ar esta informa()o utili,e clearstatcac#e(). Bool is`file(string nome`arquivo)' Is8lin( Retorna true se o nome do arquivo especificado e!istir e for um linU simb7lico. .s resultados desta fun()o s)o arma,enadas e reutili,adas. Para atuali,ar esta informa()o utili,e clearstatcac#e(). Bool is`linU(string nome`arquivo)' Is8readable Retorna true se o nome do arquivo especificado e!istir e puder ser lido. .s resultados desta fun()o s)o arma,enadas e reutili,adas. Para atuali,ar esta informa()o utili,e clearstatcac#e(). Bool is`readable(string nome`arquivo)' Is %riteable Retorna true se o nome do arquivo especificado e!istir e puder ser escrito. .s resultados desta fun()o s)o arma,enadas e reutili,adas. Para atuali,ar esta informa()o utili,e clearstatcac#e(). Bool is`Eriteable(string nome`arquivo)' 1in( 4ria um #ard linU Ant linU(string target" string linU)' 1in(info Retorna informa(<es sobre um linU Ant linUinfo(string pat#)' C(dir 4ria um diret7rio com o modo especificado em formato octal Retorna true se tiver sucesso' caso contr/rio" retorna false. Ant mUdir(string pat#name" modo)' Pclose >ec#a um ponteiro de arquivo aberto por popen()" retornando o status do processo e!ecutado. Ant pclose(int fp)' Po$en Abre um ponteiro para um processo de arquivo Ant popen(string comando" string modo)' >eadfile 3+ um arquivo e o envia para a sa;da padr)o do sistema' retorna o nGmero de bytes lidos Ant readfile(string nome`arquivo)' >eadlin( Retorna o alvo(target) de um linU simb7lico String readlinU(string pat#)' >ename Altera o nome de um arquivo. Retorna true se tiver sucesso' caso contr/rio false Ant rename(string nome`anterior" string nome`novo)' >e%ind 2uda a posi()o do ponteiro para o inicio do arquivo Ant reEind(int fp)' >mdir Apaga um diret7rio va,io Ant rmdir(string nome`diretorio)' Set8file8buffer ?efine o taman#o do buffer de escrita de arquivos (default ] LIJQ bytes). Se definido como S" ent)o as opera(<es de escrita n)o ser)o colocadas em buffer. Stat Retorna em um array as informa(<es sobre um arquivo Array stat(string nome`arquivo) ' :lemento 4onteGdo I ?evice Q Anode H 2odo de prote()o inode 0 CGmero de linUs @ Adentifica()o do usu/rio propriet/rio do arquivo X Adentifica()o do grupo propriet/rio do arquivo R %ipo de dispositivo Anode(n)o dispon;vel no EindoEs) L %aman#o(em bytes) J ?ata9#ora do Gltimo acesso IS ?ata9#ora da Gltima altera()o no arquivo II ?ata9#ora da Gltima altera()o de estado do arquivo IQ %aman#o de bloco para filesystem A9. (n)o dispon;vel no EindoEs) IH CGmero de blocos alocados Smlin( 4ria um linU simb7lico entre o alvo e!istente e o nome especificado Ant symlinU(string target" string linU)' Dem$nam Retorna um nome de arquivo tempor/rio Gnico no diret7rio especificado com um prefi!o determinado pelo parMmetro prefi!o String tempnam(string diret7rio" string prefi!o)' Douc& Altera a data9#ora de modifica()o de um arquivo. Se o arquivo n)o e!istir" ser/ criado. Retorna true se tiver sucesso' caso contr/rio" retorna false. Ant touc#(string nome`arquivo" int time)' @mas( Altera o umasU atual. Nuando o PHP 1 um m7dulo do servidor" o umasU 1 restaurado no fim de cada request. Ant umasU(int masU) ' @nlin( :limina um nome de arquivo(linU) Ant unlinU(string nome8arquivo)' Opes e informaes do PHP 2rror8log :nvia uma mensagem de erro para o registro de erros do servidor Eeb" para uma porta %4P ou para um arquivo Ant error`log(string mensagem" int tipo`mensagem" string mdestinoo" string m#eaderse!traso)' Argumento ?escri()o 2ensagem 2ensagem de erro %ipo`mensagem %ipo da mensagem S A mensagem 1 enviada para o log do p#p I A mensagem 1 enviada por email para o endere(o indicado no argumento destino Q A mensagem 1 enviada atrav1s de uma cone!)o remota de debugging do PHP. H A mensagem 1 adicionada ao arquivo indicado no argumento destino. ?estino ?estino da mensagem. ?epende do tipo da mensagem Headerse!tras Argumento opcional utili,ado quando o argumento tipo`mensagem for I. 2rror8re$orting ?efine quais error devem ser reportados pelo PHP Ant error`reporting(int mn;velo)' Argumento ?escri()o C;vel *alor obtido com a soma dos c7digos dos erros que devem ser reportados I :`:RR.R F :rros que o PHP n)o pode ignorar" como fal#as de aloca()o de mem7ria" etc. Q :`=ARCACO F :rror que o PHP suspeita poderem causar um erro mais grave 0 :`PARS: F :rro de processamento do programa L :`C.%A4: F Avisos de que certa parte de um c7digo pode causar um erro mais grave IX :`4.R:`:RR.R F :rros graves com os :`:RR.R" mas s)o gerados pela base PHP. HQ :`4.R:`=ARCACO F Poss;veis erros no c7digo" mas gerados pela base PHP 2<tension8loaded Retorna true se uma e!tens)o foi carregada. Btili,e a fun()o p#pinfo() para ver os nomes das e!tens<es. Bool e!tension`loaded(string nome`e!tens)o)' Bet8cfg8"ar Retorna o valor de uma op()o de configura()o do PHP" ou false se ocorrer um erro String get`cfg`var(string nome`vari/vel) ' Bet8current8user Retorna o nome do propriet/rio do script PHP corrente String get`current`user(void)' Bet8magic8*uotes8g$c Retorna o status da op()o magic`quotes`gpc do arquivo de configura()o p#p.ini (S para off" I para on). 3ong get`magic`quotes`gpc(void) ' Bet8magic8*uotes8runtime Retorna o status da op()o magic`quotes`runtime do arquivo de configura()o p#p.ini (S para off" I para on). 3ong get`magic`quotes`runtime(void) ' Beten" Retorna o valor de uma vari/vel de ambiente" ou false se ocorrer um erro. Para ver a lista de vari/veis de ambiente utili,e a fun()o p#pinfo(). String getenv(string nome`vari/vel)' Betlastmod Retorna a data9#ora da Gltima modifica()o da p/gina corrente ou false se ocorrer um erro Ant getlastmod(void)' Betminode Retorna o inode do script corrente" ou false se ocorrer um erro. Ant getmyinode(void)' Betm$id Retorna o A? de processo corrente do PHP" ou false se ocorrer um erro Ant getmypid(void)' Betmuid Retorna o A? do usu/rio do script PHP corrente" ou false ocorrer um erro int getmyuid(void) ' Betrusage Retorna informa(<es da utili,a()o dos recursos atuais em um array Array getrusage(int mE#oo)' P&$info Retorna diversas informa(<es sobre o PHP Ant p#pinfo(void)' P&$"ersion Retorna a vers)o do PHP instalada. String p#pversion(void)' Puten" Atribui um valor a uma vari/vel de ambiente *oid putenv(string setting)' Set8magic8*uotes8runtime Altera a configura()o atual da op()o magic`quotes`runtime do arquivo de configura()o p#p.ini (S para off" I para on) 3ong set`magic`quotes`runtime(int nova`conf)' Set8time8limit 3imita o tempo 2a!imo de e!ecu()o do script. Se definido como S(,ero) o script ser/ e!ecutado indefinidamente. *oid set`time`limit(int num`segundos)' 5atem!tica Abs Retorna o valor absoluto de um nGmero. 2i!ed abs(mi!ed nGmero)' Acos Retorna o arco8coseno de um Mngulo em radianos >loat acos(float arg)' Asin Retorna o arco8seno de um Mngulo em radianos >loat asin(float arg)' Atan Retorna o arco8tangente de um Mngulo em radianos >loat atan(float arg)' Atan4 Retorna o arco8tangente de duas vari/veis >loat atanQ(float y" float !)' 'ase8con"ert Retorna uma string com um nGmero convertido para outra base num1rica. String base`convert(string nGmero" int base`ant" int nova`base)' 'indec Retorna um nGmero convertido de bin/rio para decimal Ant bindec(string string`bin/rio)' Argumento ?escri()o String`bin/rio String contendo a representa()o bin/ria de um nGmero )eil Retorna o pr7!imo nGmero inteiro maior ou igual ao nGmero especificado Ant ceil(float nGmero)' )os Retorna o co8seno de um Mngulo em radianos >loat cos(float arg)' Aecbin Retorna uma string contendo a representa()o bin/ria de um nGmero String decbin(int nGmero)' Aec&e< Retorna uma string contendo a representa()o #e!adecimal de um nGmero String dec#e!(int nGmero)' Aecoct Retorna uma string contendo a representa()o octal de um nGmero String decoct(int nGmero)' 2<$ Retorna a constante e elevada 6 pot+ncia especificada >loat e!p(float arg)' Floor Retorna o pr7!imo nGmero inteiro menor ou igual ao nGmero especificado Ant floor(float nGmero)' Betrandma< Retorna o valor m/!imo que pode ser gerado pela fun()o rand() Ant getrandma!(void)' 0e<dec Retorna um nGmero convertido de #e!adecimal para decimal. Ant #e!dec(string string`#e!a)' 1og Retorna o logaritmo natural de um nGmero >loat log(float arg) ' 1og1/ Retorna o logaritmo base IS de um nGmero >loat logIS(float arg) ' Ca< Retorna o maior dentre os especificados 2i!ed ma!(mi!ed argI" mi!ed argQ" mi!ed argn)' Cin Retorna o menor dentre os especificados 2i!ed min(mi!ed argI" mi!ed argQ" mi!ed argn)' Ct8rand Oera um nGmero aleat7rio mais confi/vel no intervalo especificado Ant mt`rand(int mlimite`info" int mlimite`supo)' Ct8srand Altera a semente do gerador de nGmeros aleat7rios para a fun()o mt`rand() *oid mt`srand(int semente) ' Ct8getrandma< Retorna o maior valor poss;vel que a fun()o mt`rand() pode retornar Ant mt`getrandma!(void)' Number8format Retorna a vers)o formatada de um nGmero" colocando os separadores de mil#ares e o separador decimal String number`format(float nGmero" int decimais" string sep`dec" string sep`mil#ar )' #ctdec Retorna um numero convertido de octal para decimal Ant octdec(string octal`string)' Pi Retorna o valor da constante pi ?ouble pi(void)' Po% Retorna o resultado de uma base elevada a um e!poente >loat poE(float base" float e!poente)' >and Retorna um nGmero aleat7rio dentro de um intervalo especificado Ant rand(int mlimit`info" int mlimi`supo)' >ound Retorna o valor de um nGmero arredondado para o nGmero inteiro mais pr7!imo. Se o nGmero estiver e!atamente entre dois nGmeros inteiros" o resultado ser/ sempre o nGmero inteiro par ?ouble rand(double nGmero)' Sin Retorna o seno de um Mngulo em radianos >loat sin(float arg)' S*rt Retorna a rai, quadrada >loat sqrt(float arg )' Srand Altera a semente do gerador de nGmeros aleat7rios para a fun()o *oid srand(int semente)' Dan Retorna a tangente de um Mngulo em radianos >loat tan(float arg)' "riptografia Ccr$t8cbc 4riptografa9descriptografa dados no modo 4B4 Ant mcrypt`cbc(int cifra" string c#ave" string dados" int modo" string vetor`ini)' Ccr$t8cfb 4riptografa9descriptografa dados no modo 4>B Ant mcrypt`cfb(int cifra" string c#ave" string dados" int modo" string vetor`ini)' Ccr$t8create8i" 4ria um vetor de iniciali,a()o (vetor`ini) de uma origem aleat7ria" que 1 utili,ado como argumento nas fun(<es de criptografia. String mcrypt`create`iv(int taman#oiv" int origemiv )' Ccr$t8ecb 4riptografa9descriptografa dados no modo :4B Ant mcrypt`ecb(int cifra" string c#ave" string dados" int modo" string vetor`ini)' Ccr$t8get8ci$&er8name Retorna o nome da cifra especificada" ou false se a cifra n)o e!istir String mcrypt`get`cip#er`name(int cifra)' Ccr$t8get8bloc(8si?e Retorna o taman#o (em bytes) do bloco de uma cifra Ant mcrypt`get`blocU`si,e(int cifra)' Ccr$t8get8(e8si?e Retorna o taman#o (em bytes) da c#ave de uma cifra Ant mcrypt`get`Uey`si,e(int cifra)' Ccr$t8ofb 4riptografa9descriptografa dados no modo .>B Ant mcrypt`ofb(int cifra" string c#ave" string dados" int modo" string vetor`ini)' <unes diversas )onnection8aborted Retorna true se um cliente desconectou Ant connection`aborted(void)' )onnection8status Retorna o status de uma cone!)o Ant connection`status(void)' )onnection8timeout Retorna true se o tempo de e!ecu()o do script foi e!cedido Ant connection`timeout(void)' Al 4arrega" em tempo de e!ecu()o" uma e!tens)o do PHP definida em library. A diretiva de configura()o e!tension`dir do arquivo de configura()o p#p.ini define em qual diret7rio o PHP deve procurar as e!tens<es carregadas dinamicamente Ant dl(string library) ' 2"al Processa uma string como c7digo PHP *oid eval(string string`c7digo)' Aie Amprime uma mensagem e termina o script PHP *oid die(string mensagem)' 2<it %ermina o script PHP atual *oid e!it(void)' Function8e<ists Retorna true se uma determinada fun()o foi definida' caso contr/rio" retorna false Ant function`e!ists(string nome`fun()o)' Ignore8user8abort 4onfigura o processador do PHP para n)o cancelar o script caso o cliente desconecte antes da finali,a()o do mesmo Ant ignore`user`abort(int mconfigo)' I$tc$arse Retorna uma lista das tags de um bloco bin/rio AP%4 (#ttp99EEE.!e.net9iptc9) Array iptcparse(string bloco`iptc)' 1ea( 3impa a mem7ria desperdi(ada *oid leaU(int numbytes)' Cail :nvia um email para um ou mais destinat/rios Bool mail(string dest" string assunto" string mensagem" string m#eaders`adico)' Argumento ?escri()o ?est :ndere(o de email dos destinat/rios(separados por $"&) Assunto Assunto do email 2ensagem 4onteGdo do email Headers`adic :specifica #eaders adicionais que devem ser inseridas no fim do #eader padr)o. 2Gltiplos #eaders podem ser especificados e devem ser separados por neEline($cn&) :!emplo Wdestino ] $Come?estino Zendere(o@dominio.com.br\&' Wremetente ] $ComeRemetente Zremetente@dominio.com.br\&' Wassunto ] $assunto do email&' mail(Wdestino"&Wassunto&" Wmensagem" $>rom Wremetente cn& )' Pac( compacta dados em uma string bin/ria string pacU(string formato" mi!ed margso...) ' >egister8s&utdo%n8function Registra uma fun()o para e!ecu()o ao t1rmino do script Ant register`s#utdoEn`function(string nome`funcao)' Seriali?e Oera uma apresenta()o arma,en/vel de um valor String seriali,e(mi!ed valor)' Slee$ Atrasa a e!ecu()o por um tempo determinado (em segundos) *oid sleep(int num`segundos) @n$ac( ?escompacta dados numa string bin/ria Array unpacU(string formato" string data)' @nseriali?e Oera um valor v/lido a partir de uma string em representa()o para arma,enameto 2i!ed unseriali,e(string str)' @ni*uid Oera um identificador Gnico baseado na #ora atual em microsegundos Ant uniquid (string prefi!o)' @slee$ Atrasa a e!ecu()o por um tempo determinado (em microsegundos) *oid usleep(int num`microsegundos)' 4ede )&ec(dnsrr *erifica se um nome de servidor ou endere(o de Ap e!iste nos registros de ?CS Ant c#ecUdnsrr(string #ost" string mtipoo) )loselog >ec#a uma cone!)o ao #ist7rico do sistema (system logger) Ant closelog(void) ' Aebugger8on Habilita o depurador interno do PHP Ant debugger`on(string endere(o)' Aebugger8off ?esabilita o depurador interno do PHP Ant debugger`off(void)' Fsoc(o$en Abre uma cone!)o com um servidor Ant fsocUopen(string #ostname" int port" int merrnoo" string merrstro" double mtimeouto)' Bet&ostbaddr Retorna o nome do servidor de um endere(o AP String get#ostbyaddr(string endere(o`AP)' Bet&ostbname Retorna o endere(o AP de um servidor String get#ostbyname(string #ostname)' #$enlog Abre uma cone!)o ao #ist7rico do sistema(system logger) para um programa Ant openlog(string ident" int op()o" int facilidade)' Pfsoc(o$en Abre uma cone!)o persistente com um servidor Ant pfsocUopen(string #ostname" int port" int merrnoo" string merrstro" double mtimeouto)' Set8soc(et8bloc(ing ?efine o modo de cone!)o com o servidor (bloqueado ou n)o bloqueado) Ant set`socUet`blocUing(int socUet" int modo)' Sslog Oera uma mensagem de #ist7rico (log) do sistema Ant syslog(int prioridade" string mensagem)' ,'presses regulares 2reg :!press)o regular de busca9compara()o. Ant ereg(string e!pr`regular" string te!to" array mregso)' Argumento ?escri()o :!pr`regular :!press)o regular %e!to %e!to para busca Regs .p(<es diversas. *e-a $man rege!& 2reg8re$lace :!press)o de busca9substitui()o. Retorna a string modificada String ereg`replace(string e!pr`regular" string te!to`subst" string te!to) ' Argumento ?escri()o :!pr`regular :!press)o regular %e!to`subst %e!to para substitui()o %e!to %e!to a ser substitu;do 2regi Similar 6 fun()o ereg()" e!ceto que n)o 1 sens;vel a letras maiGsculas e minGsculas Ant eregi(string e!pr`regular" string te!to" array mregso)' 2regi8re$lace Similar 6 fun()o ereg`replace()" e!ceto que n)o 1 sens;vel a letras maiGsculas e minGsculas String eregi`replace(string e!pr`regular" string te!to`subst" string te!to) ' S$lit :!press)o regular para dividir uma string em partes e colocar as partes em um array Array split(string e!pr`regular" string te!to" int mlimiteo)' Argumento ?escri()o :!pr`regular :!press)o regular %e!to String a ser dividida 3imite 3imitador (caractere que caracteri,a os pontos de divis)o na string) S*l8regcase Retorna uma e!press)o regular para busca n)o8sens;vel a letras maiGsculas e minGsculas String sql`regcase(string string)' Tratamento de sesses Session8decode9P0P:; ?ecodifica os dados de uma sess)o em uma string Bool session`decode(string dados)' Session8destro9P0P:; ?estr7i os dados registrados associados 6 sess)o atual Bool session`destroy(void)' Session8encode9P0P:; 4odifica os dados de uma sess)o Bool session`encode(void) ' Session8start9P0P:; Aniciali,a os dados de uma sess)o Bool session`start(void)' Session8id9P0P:; Retorna ou muda o identificador da sess)o atual String session`id(string mido)' Session8is8registered9P0P:; ?escobre se uma vari/vel foi registrada na sess)o Bool session`is`registered(string nome)' Session8module8name9P0P:; Retorna ou muda o nome do m7dulo da sess)o atual String session`module`name(string mm7duloo)' Session8name9P0P:; Retorna ou muda o nome da sess)o atual String session`name(string mnomeo)' Session8register9P0P:; Registra uma vari/vel com a sess)o atual Bool session`register(string nome)' Session8sa"e8$at&9P0P:; Retorna ou muda o pat# de grava()o da sess)o atual String session`save`pat#(string mpat#o)' Session8unregister9P0P:; ?escarta uma vari/vel da sess)o atual Bool session`unregister(string nome)' Strings Addslas&es 4oloca barras invertidas antes dos caracteres especiais ap7strofo(p)" aspas($)" barra invertida (c) e CB3 String addslas#es(string str)' 'in4&e< 4onverte dados bin/rios em representa()o #e!adecimal String binQ#e!(string str)' )&o$ Remove espa(os em branco em seqn+ncia String c#op(string str)' )&r Retorna um caractere especifico dado um c7digo AS4AA String c#r(int c7d`ascii)' )&un(8s$lit ?ivide uma string em peda(os de taman#o $compr&" colocando a string $fim& no fim de cada peda(o e retornando tudo em uma string. . parMmetro $compr& tem valor padr)o de RX e o parMmetro $fim& tem valor padr)o de $crcn& caso esses n)o se-am especificados. String c#uncU`split(string te!to" int mcompro" string mfimo)' )on"ert8cr8string 4onverte uma string de um con-unto de caracteres cir;licos em outro String convert`cyr`string(string str" string de" string para)' )r$t Retorna uma string criptografada atrav1s do modo ?:S. String crypt(string str" string msalfo)' 2c&o Amprime uma ou mais strings :c#o (string argI" string argn....)' 2<$lode Retorna um array contendo as partes da string com valores separados por um separador Array e!plode(string separador" string str) ' Flus& :nvia todo o buffer de impress)o ao broEser cliente *oid flus#(void)' Bet8meta8tags :!trai todas as tags Zmeta\ de um arquivo e retorna um array Array get`meta`tags(string nome`arquivo" int muse`include`pat#o) ' 0tmlentities 4onverte todos os caracteres aplic/veis em tags H%23 String #tmlentities(string str)' 0tmls$ecialc&ars 4onverte caracteres especiais em tags H%23 String #tmlspecialc#ars(string str)' 4aracter ?escri()o pge pgamp'e p&e pgquot'e pZe pglt'e p\e pggt'e Im$lode Retorna uma string contendo a representa()o string de todos os elementos de um array separados pelo argumento glue String implode(string glue" array fatias)' Eoin . mesmo que implode() String -oin(string glue" array fatias)' 1trim Retorna uma string sem os espa(os iniciais String ltrim(string str)' CdF Retorna o #as# 2?@ de uma string String md@(string str)' Nl4br Retorna uma string com tags ZBR\ inseridos ap7s os caracteres de nova lin#a String nlQbr(string str)' #rd Retorna o valor AS4AA do primeiro caractere de uma string Ant ord(string str)' Parse8str 4onverte uma string de parMmetros no formato das BR3s vindas de formul/rios H%23 em vari/veis *oid parse`str(string str)' :!emplo Wstr ] $form]firmgoperation]insertginde!]S&' parse`str(Wstr)' ec#o Wform' 99imprime $firm& ec#o Woperation' 99imprime $insert& ec#o Winde!' 99imprime $S& Print imprime uma string print(string arg)' Printf Amprime uma string formatada Ant printf(string formato" mi!ed margso...)' 3uoted8$rintable8decode 4onverte uma string imprim;vel em uma string de L bits String quoted`printable`decode(string str)' 3uotemeta 4oloca uma barra invertida antes dos caracteres meta ( cc f k V m i o ( W ) ) de uma string String quotemeta(string str)' >a%urldeconde ?ecodifica uma BR3" retornando uma BR3 com os caracteres na forma literal String raEurldecode(string str)' >a%urlenconde 4odifica uma BR3" retornando uma BR3 com os caracteres n)o8alfanum1ricos convertidos em c7digos String raEurlencode(string str)' Setlocale Altera as informa(<es de localidade String setlocale(string categoria" string locale)' Similar8te<t 4alcula a similaridade entre duas strings Ant similar`te!t(string strI" string strQ" double mporcentagemo)' Sounde< 4alcula a c#ave sounde! de uma string String sounde!(string str)' S$rintf Retorna uma string formatada String Sprintf(string formato" mi!ed margso)' Strc&r . mesmo que strstr() String strc#r(string #aystacU" string needle)' Strcm$ 4ompara duas strings" retornando um valor Z S se strI for menor que strQ' \ S se strI for maior que strQ" e S se elas forem iguais Ant strcmp(string strI" string strQ)' Strcs$n Retorna o comprimento do segmento inicial de strI que n)o contem nen#um dos caracteres de strQ Ant strcspn(string strI" string strQ)' Stri$8tags Retorna uma string sem as tags H%23 e PHP String strp`tags(string str)' Stri$slas&es Apaga as barras invertidas de caracteres espec;ficos String stripslas#es(string str)' Strlen Retorna o comprimento de uma string Ant strlen(string str)' Str$os Retorna a posi()o da primeira ocorr+ncia de uma string(strQ) dentro de outra (strI) Ant strpos(string strI" string strQ" int moffseto)' Strr$os Retorna a posi()o da Gltima ocorr+ncia de uma string(strQ) dentro de outra(strI) Ant strrpos(string strI" c#ar strQ)' Strrc&r Retorna a parte do te!to que vai do fim da string at1 a primeira ocorr+ncia do caracter $car&. Retorna false se n)o #ouver nen#uma ocorr+ncia de car String strrc#r(string te!to" string car)' Strre" Anverte uma string String strrev(string str)' Strs$n Retorna o comprimento do segmento inicial de strI que consiste inteiramente de caracteres em strQ Ant strspn(string strI" string strQ)' Strstr Retorna a parte de strI que vai da primeira ocorr+ncia de strQ em strI at1 o fim de strI String strstr(string strI" string strQ)' Strto( Separa uma string em partes divididas por argQ String strtoU(string argI" string strQ) ' Strtolo%er %ransforma as letras em uma string para minGscula. String strtoloEer(string str) ' Strtou$$er %ransforma as letras em uma string para maiGscula. String strtoupper(string str) ' Str8re$lace Substitui todas as ocorr+ncias de uma substring por outra String str`replace(string str`ant" string novo`str" string str) ' Argumento ?escri()o Str`ant Substring a ser substitu;da Covo`str Substring que substituir/ a anterior Str String original Strtr %radu, todas as ocorr+ncias de cada caractere em de pelo caractere correspondente em para na string str String strtr(string str" string de" string para)' Substr Retorna parte de uma string String substr(string.str" int inicio" int mtaman#oo)' Argumento ?escri()o Anicio posi()o inicial %aman#o CGmero de caracteres a serem retornados Drim Apaga os espa(os em branco do inicio e fim de uma string. String trim(string str)' @cfirst %ransforma o primeiro caractere de uma string em maiGsculo String ucfirst(string str) ' @c%ords %ransforma o primeiro caractere de cada palavra de uma string em maiGsculo String ucEords(string str)' <unes para vari!veis Aouble"al Retorna o valor em ponto flutuante de uma vari/vel ?ouble doubleval(mi!ed var) ' 2m$t Retorna false se var estiver atribu;da' caso contr/rio retorna true Ant empty(mi!ed var) ' Bett$e Retorna o tipo de uma vari/vel String gettype(mi!ed var)' Int"al Retorna o valor em inteiros de uma vari/vel" utili,ando uma base especificada. . padr)o da base 1 IS Ant intval(mi!ed var" int mbaseo) Is8arra Retorna true se a vari/vel for do tipo array Ant is`array(mi!ed var)' Is8double Retorna true se a vari/vel for do tipo double Ant is`double(mi!ed var)' Is8float Retorna true se a vari/vel for do tipo float Ant is`float(mi!ed var)' Is8int Retorna true se a vari/vel for do tipo inteiro Ant is`int(mi!ed var)' Is8integer . mesmo que is`int() Ant is`integer(mi!ed var)' Is8long . mesmo que is`int() Ant is`long(mi!ed var)' Is8ob.ect Retorna true se a vari/vel for um ob-eto Ant is`ob-ect(mi!ed var)' Is8real Retorna true se a vari/vel for do tipo real Ant is`real(mi!ed var)' Is8string Retorna true se a vari/vel for do tipo string Ant is`string(mi!ed var)' Isset Retorna true se uma vari/vel e!istir Ant isset(mi!ed var)' Sett$e Altera o tipo de uma vari/vel. Retorna true se tiver sucesso' caso contr/rio" retorna false. Ant settype(string var" string tipo)' %ipos permitidos Anteger ?ouble String Array .b-eto Str"al Retorna o valor em string de uma vari/vel String strval(mi!ed var)' @nset :!clui uma vari/vel Ant unset(mi!ed var)' 1:. >efer!ncias na Internet Site oficial do PHP #ttp99EEE.br.p#p.net #ttp99EEE.p#p.net Site do pro-eto Tend que originou o PHP0 #ttp99EEE.,end.org Site do servidor Eeb Apac#e" que 1 amplamente utili,ado e compat;vel com o PHP #ttp99EEE.apac#e.org Site da lista principal de discuss)o de PHP no Brasil #ttp99EEE.allfinder.com.br9p#p Site com diversos e!emplos de PHP. ttimo para iniciantes #ttp99EEE.Eeberdev.com Site com diversas classes em PHP para utili,ar #ttp99EEE.t#eEebmasters.net9p#p Site com diversos artigos e tutoriais #ttp99EEE.p#pbuilder.com Artigos e informa(<es sobre PHP para =eb2asters #ttp99EEE.devs#ed.com9Server`Side9PHP %utorial de PHP com 2ySN3 #ttp99EEE.#otEired.com9EebmonUey9JJ9QI9inde!Qa.#tml 4omo criar um site de busca" como o ra#ooj" em PHP e 2ySN3. #ttp99Eebreference.com9perl9!#oo9p#pI ?iversos pro-etos" tutoriais e informa(<es sobre o PHP #ttp99EEE.p#pEi,ard.net PHP PnoEledge Base #ttp99e8gineer.com9p#pUb