+ All Categories
Home > Documents > Curso Completo PHP Mysql

Curso Completo PHP Mysql

Date post: 24-Nov-2015
Category:
Upload: vonloas
View: 32 times
Download: 1 times
Share this document with a friend
Popular Tags:
205
Curso PHP
Transcript
  • 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


Recommended