Curso PHP
Table of Contents..............................................................................................................................................................................1
..............................................................................................................................................................................2
..............................................................................................................................................................................3
1. Introduo.......................................................................................................................................................6O que PHP?...........................................................................................................................................6Histria do PHP.......................................................................................................................................7................................................................................................................................................................7O que pode ser feito com PHP?...............................................................................................................8Tabela comparativa..................................................................................................................................8
2. Sintaxe Bsica................................................................................................................................................10Delimitando o cdigo PHP....................................................................................................................10Separador de instrues.........................................................................................................................11Nomes de variveis................................................................................................................................12Comentrios...........................................................................................................................................12
3. Tipos...............................................................................................................................................................16Tipos Suportados...................................................................................................................................16
Inteiros (integer ou long).................................................................................................................17Nmeros em Ponto Flutuante (double ou float)..............................................................................17Strings..............................................................................................................................................18Arrays..............................................................................................................................................19
Listas......................................................................................................................................................21Objetos...................................................................................................................................................22Booleanos...............................................................................................................................................23Transformao de tipos..........................................................................................................................23Coeres.................................................................................................................................................23Transformao explcita de tipos...........................................................................................................25Com a funo settype.............................................................................................................................26
Curso PHP
i
Table of Contents4. Constantes......................................................................................................................................................28
Constantes prdefinidas.......................................................................................................................28Definindo constantes..............................................................................................................................28
5. Operadores....................................................................................................................................................31Aritmticos.............................................................................................................................................31de strings................................................................................................................................................31de atribuio...........................................................................................................................................32bit a bit...................................................................................................................................................33Lgicos...................................................................................................................................................34Comparao...........................................................................................................................................34Expresso condicional...........................................................................................................................35de incremento e decremento..................................................................................................................35Ordem de precedncia dos operadores..................................................................................................36
6. Estruturas de Controle.................................................................................................................................39Blocos....................................................................................................................................................39Comandos de seleo.............................................................................................................................40
if.......................................................................................................................................................40switch...............................................................................................................................................45
comandos de repetio...........................................................................................................................49while................................................................................................................................................49do... while........................................................................................................................................50for....................................................................................................................................................52
Quebra de fluxo......................................................................................................................................54Break...............................................................................................................................................54Continue..........................................................................................................................................55
7. Funes...........................................................................................................................................................58Definindo funes..................................................................................................................................58Valor de retorno.....................................................................................................................................59Argumentos............................................................................................................................................59Passagem de parmetros por referncia.................................................................................................60
Curso PHP
ii
Table of Contents7. Funes
Argumentos com valores prdefinidos (default).................................................................................62..............................................................................................................................................................63Escopo....................................................................................................................................................64
8. Variveis........................................................................................................................................................68O modificador static...............................................................................................................................68Variveis Variveis................................................................................................................................70Variveis enviadas pelo navegador........................................................................................................70URLencode............................................................................................................................................71Variveis de ambiente............................................................................................................................72Verificando o tipo de uma varivel........................................................................................................72
Funo que retorna o tipo da varivel.............................................................................................72Funes que testam o tipo da varivel.............................................................................................73
Destruindo uma varivel........................................................................................................................73Verificando se uma varivel possui um valor........................................................................................74Arrays Multidimensionais......................................................................................................................75
9. Classes e Objetos...........................................................................................................................................78Classe.....................................................................................................................................................78Objeto.....................................................................................................................................................78A varivel $this......................................................................................................................................79SubClasses.............................................................................................................................................80Construtores...........................................................................................................................................81
10. PHP avanado.............................................................................................................................................85Interagindo com o browser....................................................................................................................85Utilizando formulrios HTML...............................................................................................................87Cookies..................................................................................................................................................89Sesso.....................................................................................................................................................90Require...................................................................................................................................................91Include....................................................................................................................................................91Formulrios Avanados.........................................................................................................................92
Curso PHP
iii
Table of Contents10. PHP avanado
Arquivos Remotos.................................................................................................................................93Lendo...............................................................................................................................................94Escrevendo......................................................................................................................................94
Tratamento de erros...............................................................................................................................95
11.SQL................................................................................................................................................................98O que ?.................................................................................................................................................98SELECT.................................................................................................................................................99
Subselees.....................................................................................................................................99INSERT...............................................................................................................................................100UPDATE..............................................................................................................................................101DELETE..............................................................................................................................................101O que h em comum entre: DELETE x UPDATE..............................................................................102CREATE..............................................................................................................................................102DROP...................................................................................................................................................103ALTER.................................................................................................................................................104
12. Bancos de dados compatveis com o PHP:..............................................................................................105
13. Biblioteca de Funes...............................................................................................................................106Bibliotecas requeridas..........................................................................................................................106Array....................................................................................................................................................107
Array..............................................................................................................................................107array_keys [PHP4]........................................................................................................................107Array_merge [PHP4].....................................................................................................................107Array_pop[PHP4]..........................................................................................................................107Array_push[PHP4]........................................................................................................................108Array_shift[PHP4].........................................................................................................................108Array_slice[PHP4]........................................................................................................................108Array_splice[PHP4]......................................................................................................................109Array_unshift[PHP4].....................................................................................................................109Array_values[PHP4] ..................................................................................................................109
Curso PHP
iv
Table of Contents13. Biblioteca de Funes
Array_walk....................................................................................................................................110Arsort.............................................................................................................................................111Asort..............................................................................................................................................111Compact[PHP4].............................................................................................................................111Count.............................................................................................................................................112Current...........................................................................................................................................112Each...............................................................................................................................................112End.................................................................................................................................................113Extract...........................................................................................................................................113In_array[PHP4].............................................................................................................................114Key................................................................................................................................................114Ksort..............................................................................................................................................114List.................................................................................................................................................114Next...............................................................................................................................................115Pos.................................................................................................................................................115Prev................................................................................................................................................115Range.............................................................................................................................................115Reset..............................................................................................................................................116Rsort..............................................................................................................................................116Shuffle...........................................................................................................................................116Sizeof.............................................................................................................................................116Sort................................................................................................................................................117Uasort............................................................................................................................................117Uksort............................................................................................................................................117Usort..............................................................................................................................................117
Matemtica para nmeros inteiros.......................................................................................................118Bcpow............................................................................................................................................118Bcscale...........................................................................................................................................118
Datas....................................................................................................................................................118Checkdate......................................................................................................................................118Date...............................................................................................................................................119Getdate...........................................................................................................................................120
Curso PHP
v
Table of Contents13. Biblioteca de Funes
Gettimeofday.................................................................................................................................121Gmdate..........................................................................................................................................121Gmmktime.....................................................................................................................................121Gmstrftime.....................................................................................................................................122Microtime......................................................................................................................................122Mktime..........................................................................................................................................122Strftime..........................................................................................................................................122Time...............................................................................................................................................124
Diretrio...............................................................................................................................................124Chdir..............................................................................................................................................124Classe dir.......................................................................................................................................124Closedir.........................................................................................................................................125Opendir..........................................................................................................................................125Readdir..........................................................................................................................................125Rewinddir......................................................................................................................................125
Execuo de Programas.......................................................................................................................126Escapeshellcmd.............................................................................................................................126Exec...............................................................................................................................................126Passthru.........................................................................................................................................126System...........................................................................................................................................127
Sistema de arquivos do servidor..........................................................................................................127Basename.......................................................................................................................................127Chgrp.............................................................................................................................................127Chmod...........................................................................................................................................128Chown...........................................................................................................................................128Clearstatcache................................................................................................................................128Copy..............................................................................................................................................129Delete.............................................................................................................................................129Dirname.........................................................................................................................................129Diskfreespace................................................................................................................................129Fclose.............................................................................................................................................130Feof................................................................................................................................................130
Curso PHP
vi
Table of Contents13. Biblioteca de Funes
Fgetc..............................................................................................................................................130Fgetcsv...........................................................................................................................................130Fgets..............................................................................................................................................131Fgetss.............................................................................................................................................131File.................................................................................................................................................131File_exists......................................................................................................................................131Fileatime........................................................................................................................................132Filectime........................................................................................................................................132Filegroup.......................................................................................................................................132Fileinode........................................................................................................................................132Filemtime.......................................................................................................................................133Fileowner.......................................................................................................................................133Fileperms.......................................................................................................................................133Filesize...........................................................................................................................................133Filetype..........................................................................................................................................134Flock..............................................................................................................................................134Fopen.............................................................................................................................................135Fpassthru.......................................................................................................................................136Fputs..............................................................................................................................................136Fread..............................................................................................................................................136Fseek..............................................................................................................................................136Ftell................................................................................................................................................137Fwrite.............................................................................................................................................137Is_dir..............................................................................................................................................137Is_executable.................................................................................................................................137Is_file.............................................................................................................................................138Is_link............................................................................................................................................138Is_readable.....................................................................................................................................138Is writeable....................................................................................................................................138Link...............................................................................................................................................139Linkinfo.........................................................................................................................................139Mkdir.............................................................................................................................................139
Curso PHP
vii
Table of Contents13. Biblioteca de Funes
Pclose.............................................................................................................................................139Popen.............................................................................................................................................140Readfile.........................................................................................................................................140Readlink.........................................................................................................................................140Rename..........................................................................................................................................140Rewind...........................................................................................................................................141Rmdir.............................................................................................................................................141Set_file_buffer...............................................................................................................................141Stat.................................................................................................................................................141Symlink.........................................................................................................................................142Tempnam.......................................................................................................................................142Touch.............................................................................................................................................142Umask............................................................................................................................................143Unlink............................................................................................................................................143
Opes e informaes do PHP.............................................................................................................143Error_log.......................................................................................................................................143Error_reporting..............................................................................................................................144Extension_loaded..........................................................................................................................144Get_cfg_var...................................................................................................................................145Get_current_user...........................................................................................................................145Get_magic_quotes_gpc.................................................................................................................145Get_magic_quotes_runtime...........................................................................................................145Getenv...........................................................................................................................................146Getlastmod.....................................................................................................................................146Getmyinode...................................................................................................................................146Getmypid.......................................................................................................................................146Getmyuid.......................................................................................................................................147Getrusage.......................................................................................................................................147Phpinfo..........................................................................................................................................147Phpversion.....................................................................................................................................147Putenv............................................................................................................................................148Set_magic_quotes_runtime...........................................................................................................148
Curso PHP
viii
Table of Contents13. Biblioteca de Funes
Set_time_limit...............................................................................................................................148Matemtica...........................................................................................................................................148
Abs.................................................................................................................................................148Acos...............................................................................................................................................149Asin...............................................................................................................................................149Atan...............................................................................................................................................149Atan2.............................................................................................................................................149Base_convert.................................................................................................................................150Bindec............................................................................................................................................150Ceil................................................................................................................................................150Cos.................................................................................................................................................150Decbin...........................................................................................................................................150Dechex...........................................................................................................................................151Decoct............................................................................................................................................151Exp.................................................................................................................................................151Floor..............................................................................................................................................151Getrandmax...................................................................................................................................152Hexdec...........................................................................................................................................152Log.................................................................................................................................................152Log10.............................................................................................................................................152Max................................................................................................................................................152Min................................................................................................................................................152Mt_rand.........................................................................................................................................153Mt_srand........................................................................................................................................153Mt_getrandmax.............................................................................................................................153Number_format.............................................................................................................................153Octdec............................................................................................................................................154Pi....................................................................................................................................................154Pow................................................................................................................................................154Rand...............................................................................................................................................154Round............................................................................................................................................155Sin..................................................................................................................................................155
Curso PHP
ix
Table of Contents13. Biblioteca de Funes
Sqrt................................................................................................................................................155Srand..............................................................................................................................................155Tan.................................................................................................................................................156
Criptografia..........................................................................................................................................156Mcrypt_cbc....................................................................................................................................156Mcrypt_cfb....................................................................................................................................156Mcrypt_create_iv...........................................................................................................................156Mcrypt_ecb....................................................................................................................................157Mcrypt_get_cipher_name..............................................................................................................157Mcrypt_get_block_size.................................................................................................................157Mcrypt_get_key_size....................................................................................................................157Mcrypt_ofb....................................................................................................................................158
Funes diversas..................................................................................................................................158Connection_aborted.......................................................................................................................158Connection_status.........................................................................................................................158Connection_timeout......................................................................................................................158Dl...................................................................................................................................................159Eval................................................................................................................................................159Die.................................................................................................................................................159Exit................................................................................................................................................159Function_exists..............................................................................................................................160Ignore_user_abort..........................................................................................................................160Iptcparse........................................................................................................................................160Leak...............................................................................................................................................160Mail...............................................................................................................................................161Pack...............................................................................................................................................161Register_shutdown_function.........................................................................................................162Serialize.........................................................................................................................................162Sleep..............................................................................................................................................162Unpack...........................................................................................................................................162Unserialize.....................................................................................................................................163Uniquid..........................................................................................................................................163
Curso PHP
x
Table of Contents13. Biblioteca de Funes
Usleep............................................................................................................................................163Rede.....................................................................................................................................................163
Checkdnsrr.....................................................................................................................................163Closelog.........................................................................................................................................164Debugger_on.................................................................................................................................164Debugger_off.................................................................................................................................164Fsockopen......................................................................................................................................164Gethostbyaddr...............................................................................................................................165Gethostbyname..............................................................................................................................165Openlog.........................................................................................................................................165Pfsockopen....................................................................................................................................165Set_socket_blocking......................................................................................................................166Syslog............................................................................................................................................166
Expresses regulares............................................................................................................................166Ereg...............................................................................................................................................166Ereg_replace..................................................................................................................................166Eregi..............................................................................................................................................167Eregi_replace.................................................................................................................................167Split...............................................................................................................................................167Sql_regcase....................................................................................................................................168
Tratamento de sesses..........................................................................................................................168Session_decode[PHP4].................................................................................................................168Session_destroy[PHP4].................................................................................................................168Session_encode[PHP4].................................................................................................................168Session_start[PHP4]......................................................................................................................169Session_id[PHP4]..........................................................................................................................169Session_is_registered[PHP4]........................................................................................................169Session_module_name[PHP4]......................................................................................................169Session_name[PHP4]....................................................................................................................170Session_register[PHP4].................................................................................................................170Session_save_path[PHP4].............................................................................................................170Session_unregister[PHP4].............................................................................................................170
Curso PHP
xi
Table of Contents13. Biblioteca de Funes
Strings..................................................................................................................................................171Addslashes.....................................................................................................................................171Bin2hex.........................................................................................................................................171Chop..............................................................................................................................................171Chr.................................................................................................................................................171Chunk_split...................................................................................................................................172Convert_cyr_string........................................................................................................................172Crypt..............................................................................................................................................172Echo...............................................................................................................................................172Explode..........................................................................................................................................173Flush..............................................................................................................................................173Get_meta_tags...............................................................................................................................173Htmlentities...................................................................................................................................173Htmlspecialchars...........................................................................................................................174Implode..........................................................................................................................................174Join................................................................................................................................................174Ltrim..............................................................................................................................................174Md5...............................................................................................................................................175Nl2br..............................................................................................................................................175Ord.................................................................................................................................................175Parse_str........................................................................................................................................175Print...............................................................................................................................................176Printf..............................................................................................................................................176Quoted_printable_decode..............................................................................................................176Quotemeta.....................................................................................................................................177Rawurldeconde..............................................................................................................................177Rawurlenconde..............................................................................................................................177Setlocale........................................................................................................................................177Similar_text...................................................................................................................................178Soundex.........................................................................................................................................178Sprintf............................................................................................................................................178Strchr.............................................................................................................................................178
Curso PHP
xii
Table of Contents13. Biblioteca de Funes
Strcmp...........................................................................................................................................179Strcspn...........................................................................................................................................179Strip_tags.......................................................................................................................................179Stripslashes....................................................................................................................................179Strlen.............................................................................................................................................180Strpos.............................................................................................................................................180Strrpos...........................................................................................................................................180Strrchr............................................................................................................................................180Strrev.............................................................................................................................................181Strspn.............................................................................................................................................181Strstr..............................................................................................................................................181Strtok.............................................................................................................................................181Strtolower......................................................................................................................................182Strtoupper......................................................................................................................................182Str_replace.....................................................................................................................................182Strtr................................................................................................................................................182Substr.............................................................................................................................................183Trim...............................................................................................................................................183Ucfirst............................................................................................................................................183Ucwords.........................................................................................................................................183
Funes para variveis.........................................................................................................................184Doubleval......................................................................................................................................184Empty............................................................................................................................................184Gettype..........................................................................................................................................184Intval..............................................................................................................................................184Is_array..........................................................................................................................................185Is_double.......................................................................................................................................185Is_float...........................................................................................................................................185Is_int..............................................................................................................................................185Is_integer.......................................................................................................................................185Is_long...........................................................................................................................................186Is_object........................................................................................................................................186
Curso PHP
xiii
Table of Contents13. Biblioteca de Funes
Is_real............................................................................................................................................186Is_string.........................................................................................................................................186Isset................................................................................................................................................187Settype...........................................................................................................................................187Strval.............................................................................................................................................187Unset..............................................................................................................................................188
14. Referncias na Internet............................................................................................................................190
Curso PHP
xiv
o:p 1
o:p 2
Curso de PHP
o:p 3
Apostila desenvolvida por Bruno Rodrigues Siqueira( [email protected] )
Curso PHP
o:p 4
Curso PHP
o:p 5
1. IntroduoO que PHP? PHP significa: Hypertext Preprocessor. Realmente, o produto foi originalmente chamado de PersonalHome Page Tools; mas como se expandiu em escopo, um nome novo e mais apropriado foi escolhido porvotao da comunidade. Voc pode utilizar qualquer extenso que desejar para designar um arquivo PHP, masos recomendados foram .php , .phtml. O PHP est atualmente na verso 4, chamado de PHP4 ou,simplesmente de PHP.
PHP uma linguagem de criao de scripts embutida em HTML no servidor. Os produtos patenteadosnesse nicho do mercado so as Active Server Pages da Microsoft, o Coldfusion da Allaire e as Java ServerPages da Sun. PHP s vezes chamado de o ASP de cdigofonte aberto porque sua funcionabilidade tosemelhante ao produto/conceito, ou o que quer que seja, da Microsoft.
Exploraremos a criao de script no servidor, mais profundamente, nos prximos captulos, mas, nomomento, voc pode pensar no PHP como uma coleo de supertags de HTML que permitem adicionarfunes do servidor s suas pginas da Web. Por exemplo, voc pode utilizar PHP para montarinstantaneamente uma complexa pgina da Web ou desencadear um programa que automaticamente execute odbito no carto de crdito quando um cliente realizar uma compra.
Falando estritamente, o PHP tem pouca relao com layout, eventos ou qualquer coisa relacionada aparncia de uma pgina da Web. De fato, a maior parte do que o PHP realiza invisvel para o usurio final.Algum visualizando uma pgina de PHP no ser capaz de dizer que no foi escrita em HTML, porque oresultado final do PHP HTML.
O PHP um mdulo oficial do servidor http Apache, o lder do mercado de servidores Web livres queconstitui aproximadamente 55 por cento da World Wide Web. Isso significa que o mecanismo de script doPHP pode ser construdo no prprio servidor Web, tornando a manipulao de dados mais rpida. Assimcomo o servidor Apache, o PHP compatvel com vrias plataformas, o que significa que ele executa em seuformato original em vrias verses do UNIX e do Windows. Todos os projetos sob a gide da ApacheSoftware Foundation incluindo o PHP so software de cdigofonte aberto.
As vrias verses do PHP foram aclamadas e premiadas nos ltimos anos. O PHP3 foi o finalista em1999 no LinuxWorld Editors Choice Awards (na categoria de biblioteca/ferramentas de programao) e
1. Introduoo:p 6
ganhou o segundo lugar, perdendo s para o ColdFusion, em 1998 no Cnet Builder.com Product Awards (nacategoria de melhor ferramenta de script de servidor eles deram bastante importncia ao IDE), ao passo quea combinao PHP3/MySQL ganhou prmio de banco de dados do ano no Web98. Nada mau para umsoftware sem relaes pblicas, sem publicidade e sem uma significativa exposio na mdia.
Histria do PHP Rasmus Lerdorf engenheiro de software, membro da equipe Apache e o homem misterioso do ano o criador e a fora motriz original por trs do PHP. A primeira parte do PHP foi desenvolvida para utilizaopessoal no final de 1994. Tratavase de um wrapper de PerlCGI que o auxiliava a monitorar as pessoas queacessavam o seu site pessoal. No ano seguinte, ele montou um pacote chamado de Personal Home Page Tools(tambm conhecido como PHP Construction Kit) em resposta demanda de usurios que por acaso ou porrelatos falados depararamse com o seu trabalho. A verso 2 foi logo lanada sob o ttulo de PHP/FI e incluao Form Interpreter, uma ferramenta para analisar sintaticamente consultas de SQL.
Em meados de 1997, o PHP estava sendo utilizado mundialmente em aproximadamente 50.000 sites.Obviamente estava se tornando muito grande para uma nica pessoa administrar, mesmo para algumconcentrado e cheio de energia como Rasmus. Agora uma pequena equipe central de desenvolvimentomantinha o projeto sobre o modelo de junta benevolente do cdigofonte aberto, com contribuies dedesenvolvedores e usurios em todo o mundo. Zeev Suraski e Andi Gutmans, dois programadores israelensesque desenvolveram os analisadores de sintaxe PHP3 e PHP4, tambm generalizaram e estenderam seustrabalhos sob a rubrica de Zend.com (Zeev, Andi, Zend, entendeu?).
O quarto trimestre de 1998 iniciou um perodo de crescimento explosivo para o PHP, quando todas astecnologias de cdigofonte aberto ganharam uma publicidade intensa. Em outubro de 1998, de acordo com amelhor suposio, mais de 100.000 domnios nicos utilizavam PHP de alguma maneira. Um ano depois, oPHP quebrou a marca de um milho de domnios. Enquanto escrevo esta apostila, o nmero explodiu paracerca de dois milhes de domnios.
Curso PHP
Histria do PHP 7
O que pode ser feito com PHP?
Basicamente, qualquer coisa que pode ser feita por algum programa CGI pode ser feita tambm comPHP, como coletar dados de um formulrio, gerar pginas dinamicamente ou enviar e receber cookies.
PHP tambm tem como uma das caractersticas mais importantes o suporte a um grandenmero de bancos de dados, como dBase, Interbase, mSQL, mySQL, Oracle, Sybase, PostgreSQL e vriosoutros. Construir uma pgina baseada em um banco de dados tornase uma tarefa extremamente simples comPHP.
Alm disso, PHP tem suporte a outros servios atravs de protocolos como IMAP, SNMP, NNTP,POP3 e, logicamente, HTTP. Ainda possvel abrir sockets e interagir com outros protocolos.
Tabela comparativa
Custos ComparativosItem ASP Cold Fusion JSP PHPDesenvolvimento US$ 0 480 US$ 395 US$ 0 US$ 0Servidor US$ 620 US$ 1.295 US$ 0 595 US$ 0RDBMS US$ 1.220 4220 US$ 0 ~10.000 US$ 0 ~10.000 US$ 0Suporte de incidente US$0 245 US$ 0 75 US$ 0 75 US$ 0
Curso PHP
O que pode ser feito com PHP? 8
Curso PHP
O que pode ser feito com PHP? 9
2. Sintaxe Bsica
Delimitando o cdigo PHP
O cdigo PHP fica embutido no prprio HTML. O interpretador identifica quando um cdigo PHP pelasseguintes tags:
comandos
2. Sintaxe Bsicao:p 10
O tipo de tags mais utilizado o terceiro, que consiste em uma abreviao do primeiro. Para utilizlo, necessrio habilitar a opo shorttags na configurao do PHP. O ltimo tipo serve para facilitar o uso porprogramadores acostumados sintaxe de ASP. Para utilizlo tambm necessrio habilitlo no arquivo deconfigurao do PHP (php.ini)
Separador de instrues
Para cada fim de linha de cdigo tem que haver um ponto e vrgula, indicandoao sistema fim de instruo.
Exemplo.
Linhas de comando, de controle, no precisam de ponto e vrgula.
Curso PHP
Separador de instrues 11
Exemplo.:
Nomes de variveis
Toda varivel em PHP tem seu nome composto pelo caracter $ e uma string, que deve iniciar por uma letra ouo caracter _. PHP case sensitive, ou seja, as variveis $php e $PHP so diferentes. Por isso preciso termuito cuidado ao definir os nomes das variveis. bom evitar os nomes em maisculas, pois como veremosmais adiante, o PHP j possui alguma variveis prdefinidas cujos nomes so formados por letrasmaisculas.
Comentrios
H dois tipos de comentrios em cdigo PHP:
Comentrios de uma linha:
Curso PHP
Nomes de variveis 12
Marca como comentrio at o final da linha ou at o final do bloco de cdigo PHP o que vier antes. Pode serdelimitado pelo caracter # ou por duas barras ( // ).
Exemplo:
Comentrios de mais de uma linha:
Tem como delimitadores os caracteres /* para o incio do bloco e */ para o final do comentrio. Se odelimitador de final de cdigo PHP ( ?> ) estiver dentro de um comentrio, no ser reconhecido pelointerpretador.
Curso PHP
Nomes de variveis 13
Exemplos:
Curso PHP
Nomes de variveis 14
Curso PHP
Nomes de variveis 15
3. Tipos
Tipos Suportados
PHP suporta os seguintes tipos de dados:
Inteiro
Ponto flutuante
String
Array
Objeto
PHP utiliza checagem de tipos dinmica, ou seja, uma varivel pode conter valores de diferentes tipos emdiferentes momentos da execuo do script. Por este motivo no necessrio declarar o tipo de uma varivelpara usla. O interpretador PHP decidir qual o tipo daquela varivel, verificando o contedo em tempo deexecuo.
Ainda assim, permitido converter os valores de um tipo para outro desejado, utilizando o typecasting ou afuno settype (ver adiante).
3. Tiposo:p 16
Inteiros (integer ou long)Uma varivel pode conter um valor inteiro com atribuies que sigam as seguintes sintaxes:
$php = 1234; # inteiro positivo na base decimal
$php = 234; # inteiro negativo na base decimal
$php = 0234; # inteiro na base octalsimbolizado pelo 0
# equivale a 156 decimal
$php = 0x34; # inteiro na base hexadecimal(simbolizado
# pelo 0x) equivale a 52 decimal.
A diferena entre inteiros simples e long est no nmero de bytes utilizados para armazenar a varivel. Comoa escolha feita pelo interpretador PHP de maneira transparente para o usurio, podemos afirmar que os tiposso iguais.
Nmeros em Ponto Flutuante (double ou float)Uma varivel pode ter um valor em ponto flutuante com atribuies que sigam as seguintes sintaxes:
$php = 1.234;
$php = 23e4; # equivale a 230.000
Curso PHP
Inteiros (integer ou long) 17
Strings
Strings podem ser atribudas de duas maneiras:
a) utilizando aspas simples ( ' ) Desta maneira, o valor da varivel ser exatamente o texto contido entreas aspas (com exceo de \\ e \' ver tabela abaixo)
b) utilizando aspas duplas ( " ) Desta maneira, qualquer varivel ou caracter de escape ser expandidoantes de ser atribudo.
Exemplo:
A sada desse script ser "$teste\n".
$teste = "Brasil";
$php = "$teste\n";
echo "$php";
?>
A sada desse script ser "Brasil" (com uma quebra de linha no final).
A tabela seguinte lista os caracteres de escape:
Sintaxe Significado\n Nova linha\r Retorno de carro (semelhante a \n)\t Tabulao horizontal\\ A prpria barra ( \ )\$ O smbolo $\ Aspa simples\ Aspa dupla
Arrays
Arrays em PHP podem ser observados como mapeamentos ou como vetores indexados. Mais precisamente,um valor do tipo array um dicionrio onde os ndices so as chaves de acesso. Vale ressaltar que os ndicespodem ser valores de qualquer tipo e no somente inteiros. Inclusive, se os ndices forem todos inteiros, estes
Curso PHP
Arrays 19
no precisam formar um intervalo contnuo
Como a checagem de tipos em PHP dinmica, valores de tipos diferentes podem ser usados como ndices dearray, assim como os valores mapeados tambm podem ser de diversos tipos.
Exemplo:
Equivalentemente, podese escrever:
Curso PHP
Arrays 20
ListasAs listas so utilizadas em PHP para realizar atribuies mltiplas. Atravs de listas possvel atribuir valoresque esto num array para variveis. Vejamos o exemplo:
Exemplo:
list($a, $b, $c) = array(a, b, c);
O comando acima atribui valores s trs variveis simultaneamente. bom notar que s so atribudos svariveis da lista os elementos do array que possuem ndices inteiros e no negativos. No exemplo acima astrs atribuies foram bem sucedidas porque ao inicializar um array sem especificar os ndices eles passam aser inteiros, a partir do zero. Um fator importante que cada varivel da lista possui um ndice inteiro eordinal, iniciando com zero, que serve para determinar qual valor ser atribudo. No exemplo anterior temos$a com ndice 0, $b com ndice 1 e $c com ndice 2. Vejamos um outro exemplo:
$arr = array(1=>um,3=>tres,a=>letraA,2=>dois);
list($a,$b,$c,$d) = $arr;
Aps a execuo do cdigo acima temos os seguintes valores:
$a == null
Curso PHP
Listas 21
$b == um
$c == dois
$d == tres
Devemos observar que varivel $a no foi atribudo valor, pois no array no existe elemento com ndice 0(zero). Outro detalhe importante que o valor tres foi atribudo varivel $d, e no a $b, pois seu ndice 3, o mesmo que $d na lista. Por fim, vemos que o valor letraA no foi atribudo a elemento algum da lista,pois seu ndice no inteiro.
Os ndices da lista servem apenas como referncia ao interpretador PHP para realizar as atribuies, nopodendo ser acessados de maneira alguma pelo programador. De maneira diferente do array, uma lista nopode ser atribuda a uma varivel, servindo apenas para fazer mltiplas atribuies atravs de um array.
ObjetosUm objeto pode ser inicializado utilizando o comando new para instanciar uma classe para uma varivel.
Exemplo:
class teste {
function nada() {
echo nada;
}
}
Curso PHP
Objetos 22
$php = new teste;
$php > nada();
A utilizao de objetos ser mais detalhada mais frente.
Booleanos
PHP no possui um tipo booleano, mas capaz de avaliar expresses e retornar true ou false, atravs do tipointeger: usado o valor 0 (zero) para representar o estado false, e qualquer valor diferente de zero (geralmente1) para representar o estado true.
Transformao de tipos
A transformao de tipos em PHP pode ser feita das seguintes maneiras:
Coeres
Quando ocorrem determinadas operaes (+, por exemplo) entre dois valores de tipos diferentes, o PHPconverte o valor de um deles automaticamente (coero). interessante notar que se o operando for umavarivel, seu valor no ser alterado.
Curso PHP
Booleanos 23
O tipo para o qual os valores dos operandos sero convertidos determinado da seguinte forma: Se um dosoperandos for float, o outro ser convertido para float, seno, se um deles for integer, o outro ser convertidopara integer.
Exemplo:
$php = 1; // $php a string 1
$php = $php + 1; // $php o integer 2
$php = $php + 3.7;// $php o double 5.7
$php = 1 + 1.5 // $php o double 2.5
Como podemos notar, o PHP converte string para integer ou double mantendo o valor. O sistema utilizadopelo PHP para converter de strings para nmeros o seguinte:
analisado o incio da string. Se contiver um nmero, ele ser avaliado. Seno, o valor ser 0 (zero);
O nmero pode conter um sinal no incio (+ ou );
Se a string contiver um ponto em sua parte numrica a ser analisada, ele ser considerado, e o valorobtido ser double;
Se a string contiver um e ou E em sua parte numrica a ser analisada, o valor seguinte serconsiderado como expoente da base 10, e o valor obtido ser double;
Exemplos:
Curso PHP
Booleanos 24
$php = 1 + 10.5; // $php == 11.5
$php = 1 + 1.3e3; // $php == 1299
$php = 1 + teste10.5; // $php == 1
$php = 1 + 10testes; // $php == 11
$php = 1 + " 10testes"; // $php == 11
$php = 1 + "+ 10testes"; // $php == 1
Transformao explcita de tipos
A sintaxe do typecast de PHP semelhante ao C: basta escrever o tipo entre parnteses antes do valor
Exemplo:
$php = 15; // $php integer (15)
$php = (double) $php // $php double (15.0)
$php = 3.9 // $php double (3.9)
$php = (int) $php // $php integer (3)
Curso PHP
Transformao explcita de tipos 25
// o valor decimal truncado
Os tipos de cast permitidos so:
(int), (integer) muda para integer;
(real), (double), (float) muda para float;
(string) muda para string;
(array) muda para array;
(object) muda para objeto.
Com a funo settype
A funo settype converte uma varivel para o tipo especificado, que pode ser integer, double, string,array ou object.
Exemplo:
$php = 15; // $php integer
settype($php,double) // $php double
Curso PHP
Com a funo settype 26
Curso PHP
Com a funo settype 27
4. Constantes
Constantes prdefinidas
O PHP possui algumas constantes prdefinidas, indicando a verso do PHP, o Sistema Operacional doservidor, o arquivo em execuo, e diversas outras informaes. Para ter acesso a todas as constantesprdefinidas, podese utilizar a funo phpinfo(), que exibe uma tabela contendo todas as constantesprdefinidas, assim como configuraes da mquina, sistema operacional, servidor http e verso do PHPinstalada.
Definindo constantes
Para definir constantes utilizase a funo define. Uma vez definido, o valor de uma constante no podermais ser alterado. Uma constante s pode conter valores escalares, ou seja, no pode conter nem um arraynem um objeto. A assinatura da funo define a seguinte:
int define(string nome_da_constante, mixed valor);
A funo retorna true se for bemsucedida. Veja um exemplo de sua utilizao a seguir:
4. Constanteso:p 28
define ("pi", 3.1415926536);
$circunf = 2*pi*$raio;
Curso PHP
4. Constanteso:p 29
Curso PHP
4. Constanteso:p 30
5. Operadores
Aritmticos
S podem ser utilizados quando os operandos so nmeros (integer ou float). Se forem de outro tipo, teroseus valores convertidos antes da realizao da operao.
+ adio subtrao* multiplicao/ diviso% mdulo
de strings
S h um operador exclusivo para strings:
. concatenao
5. Operadoreso:p 31
de atribuio
Existe um operador bsico de atribuio e diversos derivados. Sempre retornam o valor atribudo. No caso dosoperadores derivados de atribuio, a operao feita entre os dois operandos, sendo atribudo o resultadopara o primeiro. A atribuio sempre por valor, e no por referncia.
Curso PHP
de atribuio 32
= atribuio simples+= atribuio com adio= atribuio com subtrao*= atribuio com multiplicao/= atribuio com diviso%= atribuio com mdulo.= atribuio com concatenao
Exemplo:
$a = 7;
$a += 2; // $a passa a conter o valor 9
bit a bit
Comparam dois nmeros bit a bit.
& e lgico| ou lgico^ ou exclusivo~ no (inverso)
>> shift rightLgicosUtilizados para inteiros representando valores booleanos
and e lgicoor ou lgicoxor ou exclusivo! no (inverso)&& e lgico|| ou lgico
Existem dois operadores para e e para ou porque eles tm diferentes posies na ordem de precedncia.
Comparao
As comparaes so feitas entre os valores contidos nas variveis, e no as referncias. Sempre retornam umvalor booleano.
== igual a!= diferente de< menor que> maior que= maior ou igual a
Curso PHP
Lgicos 34
Expresso condicional
Existe um operador de seleo que ternrio. Funciona assim:
(expressao1)?(expressao2):( expressao3)
o interpretador PHP avalia a primeira expresso. Se ela for verdadeira, a expresso retorna o valor deexpresso2. Seno, retorna o valor de expresso3.
de incremento e decremento
++ incremento decremento
Podem ser utilizados de duas formas: antes ou depois da varivel. Quando utilizado antes, retorna o valor davarivel antes de incrementla ou decrementla. Quando utilizado depois, retorna o valor da varivel jincrementado ou decrementado.
Curso PHP
Expresso condicional 35
Exemplos:
$a = $b = 10; // $a e $b recebem o valor 10
$c = $a++; // $c recebe 10 e $a passa a ter 11
$d = ++$b; // $d recebe 11, valor de $b j incrementado
Ordem de precedncia dos operadores
A tabela a seguir mostra a ordem de precedncia dos operadores no momento de avaliar as expresses;
Precedncia Associatividade Operadores
1. Esquerda ,
2. Esquerda or
3. Esquerda xor
4. Esquerda and
5. Direita print
6. Esquerda = += = *= /= .= %= &= != ~= =
7. Esquerda ? :
8. Esquerda ||
Curso PHP
Ordem de precedncia dos operadores 36
9. Esquerda &&
10. Esquerda |
11. Esquerda ^
12. Esquerda &
13. no associa == !=
14. no associa < >=
15. Esquerda >
16. Esquerda + .
17. Esquerda * / %
18. Direita ! ~ ++ (int) (double) (string) (array) (object) @
19. Direita [
20. no associa new
Curso PHP
Ordem de precedncia dos operadores 37
Curso PHP
Ordem de precedncia dos operadores 38
6. Estruturas de Controle
As estruturas que veremos a seguir so comuns para as linguagens de programao imperativas, bastando,portanto, descrever a sintaxe de cada uma delas, resumindo o funcionamento.
BlocosUm bloco consiste de vrios comandos agrupados com o objetivo de relacionlos com determinado comandoou funo. Em comandos como if, for, while, switch e em declaraes de funes blocos podem ser utilizadospara permitir que um comando faa parte do contexto desejado. Blocos em PHP so delimitados peloscaracteres { e }. A utilizao dos delimitadores de bloco em uma parte qualquer do cdigo norelacionada com os comandos citados ou funes no produzir efeito algum, e ser tratada normalmente pelointerpretador.
Exemplo:
if ($x == $y)
comando1;
comando2;
Para que comando2 esteja relacionado ao if preciso utilizar um bloco:
if ($x == $y){
comando1;
6. Estruturas de Controleo:p 39
comando2;
}
Comandos de seleo
Tambm chamados de condicionais, os comandos de seleo permitem executar comandos ou blocos decomandos com base em testes feitos durante a execuo.
if
O mais trivial dos comandos condicionais o if. Ele testa a condio e executa o comando indicado se oresultado for true (valor diferente de zero). Ele possui duas sintaxes:
if (expresso)
comando;
if (expresso){
comando1;
comando2;
comando3;
comando4;
Curso PHP
Comandos de seleo 40
comando5;
comando1;
comando2;
comando3;
}
if (expresso):
comando;
. . .
comando;
endif;
Para incluir mais de um comando no if da primeira sintaxe, preciso utilizar um bloco, demarcado porchaves.
O else um complemento opcional para o if. Se utilizado, o comando ser executado se a expresso retornar ovalor false (zero). Suas duas sintaxes so:
Curso PHP
Comandos de seleo 41
if (expresso)
comando;
else
comando;
if (expresso):
comando;
. . .
comando;
else
comando;
. . .
comando;
endif;
A seguir, temos um exemplo do comando if utilizado com else:
Curso PHP
Comandos de seleo 42
if ($a > $b)
$maior = $a;
else
$maior = $b;
O exemplo acima coloca em $maior o maior valor entre $a e $b
Em determinadas situaes necessrio fazer mais de um teste, e executar condicionalmente diversoscomandos ou blocos de comandos. Para facilitar o entendimento de uma estrutura do tipo:
if (expressao1)
comando1;
else
if (expressao2)
comando2;
else
if (expressao3)
comando3;
Curso PHP
Comandos de seleo 43
else
comando4;
foi criado o comando, tambm opcional elseif. Ele tem a mesma funo de um else e um if usadosseqencialmente, como no exemplo acima. Num mesmo if podem ser utilizados diversos elseifs, ficando essautilizao a critrio do programador, que deve zelar pela legibilidade de seu script.
O comando elseif tambm pode ser utilizado com dois tipos de sintaxe. Em resumo, a sintaxe geral docomando if fica das seguintes maneiras:
if (expressao1)
comando;
[ elseif (expressao2)
comando; ]
[ else
comando; ]
Curso PHP
Comandos de seleo 44
if (expressao1) :
comando;
. . .
comando;
[ elseif (expressao2)
comando;
. . .
comando; ]
[ else
comando;
. . .
comando; ]
endif;
switch
Curso PHP
switch 45
O comando switch atua de maneira semelhante a uma srie de comandos if na mesma expresso.Freqentemente o programador pode querer comparar uma varivel com diversos valores, e executar umcdigo diferente a depender de qual valor igual ao da varivel. Quando isso for necessrio, devese usar ocomando switch. O exemplo seguinte mostra dois trechos de cdigo que fazem a mesma coisa, sendo que oprimeiro utiliza uma srie de ifs e o segundo utiliza switch:
if ($i == 0)
print i igual a zero;
elseif ($i == 1)
print i igual a um;
elseif ($i == 2)
print i igual a dois;
switch ($i) {
case 0:
print i igual a zero;
break;
case 1:
print i igual a um;
break;
Curso PHP
switch 46
case 2:
print i igual a dois;
break;
}
importante compreender o funcionamento do switch para no cometer enganos. O comando switch testalinha a linha os cases encontrados, e a partir do momento que encontra um valor igual ao da varivel testada,passa a executar todos os comandos seguintes, mesmo os que fazem parte de outro teste, at o fim do bloco.por isso usase o comando break, quebrando o fluxo e fazendo com que o cdigo seja executado da maneiradesejada. Veremos mais sobre o break mais adiante. Veja o exemplo:
switch ($i) {
case 0:
print i igual a zero;
case 1:
print i igual a um;
case 2:
print i igual a dois;
}
Curso PHP
switch 47
No exemplo acima, se $i for igual a zero, os trs comandos print sero executados. Se $i for igual a 1, osdois ltimos print sero executados. O comando s funcionar da maneira desejada se $i for igual a 2.
Em outras linguagens que implementam o comando switch, ou similar, os valores a serem testados s podemser do tipo inteiro. Em PHP permitido usar valores do tipo string como elementos de teste do comandoswitch. O exemplo abaixo funciona perfeitamente:
switch ($s) {
case casa:
print A casa amarela;
case arvore:
print a rvore bonita;
case lmpada:
print Joo apagou a lmpada;
}
Curso PHP
switch 48
comandos de repetiowhile
O while o comando de repetio (lao) mais simples. Ele testa uma condio e executa um comando, ou umbloco de comandos, at que a condio testada seja falsa. Assim como o if, o while tambm possui duassintaxes alternativas:
while ()
;
while (){
;
;
;
;
;
;
}
Curso PHP
comandos de repetio 49
while ():
;
. . .
;
endwhile;
A expresso s testada a cada vez que o bloco de instrues termina, alm