Programacao Curso de Linguagem Php

67
   1    

Transcript of Programacao Curso de Linguagem Php

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 1

    &8562'(

    /,1*8$*(0

    3+3

    $XWRU0DXUtFLR9LYDVGH6RX]D%DUUHWRPDXULFLR#FLSVJDRUJEU

    $EULOGH

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 2

    0DXUtFLR9LYDVGH6RX]D%DUUHWR

    PDXULFLR#FLSVJDRUJEU

    YLYDV#XVDQHW

    $EULOGH

    Projeto Supervisionado de Final de Curso

    Este apostila de PHP e fruto do Projeto Supervisionado de Final de Curso deMaurcio Vivas de Souza Barreto, tendo o mesmo sido submetido a uma banca

    examinadora composta pelo Professor Giovanny Lucero, Professora Ana Rosimerie Professor Leonardo Nogueira Matos, da Universidade Federal de Sergipe, Centro

    de Cincias Exatas e Tecnologia do Departamento de Estatistica e Informtica.

    &RS\ULJKW F 0DXUtFLR 9LYDV GH 6RX]D %DUUHWR

    3HUPLVVLRQ LV JUDQWHG WR FRS\ GLVWULEXWH DQGRU PRGLI\ WKLV GRFXPHQW XQGHU WKH WHUPV RI WKH *18 )UHH

    'RFXPHQWDWLRQ /LFHQVH 9HUVLRQ RU DQ\ ODWHU YHUVLRQ SXEOLVKHG E\ WKH )UHH 6RIWZDUH )RXQGDWLRQ ZLWK WKH

    ,QYDULDQW 6HFWLRQV EHLQJ /,67 7+(,5 7,7/(6 ZLWK WKH )URQW&RYHU 7H[WV EHLQJ /,67 DQG ZLWK WKH %DFN&RYHU

    7H[WV EHLQJ /,67

    $ FRS\ RI WKH OLFHQVH LV LQFOXGHG LQ WKH VHFWLRQ HQWLWOHG *18 )UHH 'RFXPHQWDWLRQ /LFHQVH

    &RS\ULJKW F 0DXUtFLR 9LYDV GH 6RX]D %DUUHWR

    ( JDUDQWLGD D SHUPLVVmR SDUD FRSLDU GLVWULEXLU HRX PRGLILFDU HVWH GRFXPHQWR VRE RV WHUPRV GD *18 )UHH 'RFXPHQWDWLRQ /LFHQVH

    YHUVmR RX TXDOTXHU RXWUD YHUVmR SRVWHULRU SXEOLFDGD SHOD )UHH 6RIWZDUH )RXQGDWLRQ VHP REULJDWRULHGDGH GH 6Ho}HV ,QYDULDQWHV QD

    DEHUWXUD H DR ILQDO GRV WH[WRV

    8PD FRSLD GD OLFHQoD GHYH VHU LQFOXtGD QD VHomR LQWLWXODGD *18 )UHH 'RFXPHQWDWLRQ /LFHQVH

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 3

    Indice

    1. INTRODUO ................................................................................................................................... 5O QUE PHP?..................................................................................................................................................................... 6O QUE PODE SER FEITO COM PHP? ...................................................................................................................................... 6COMO SURGIU A LINGUAGEM PHP?..................................................................................................................................... 6

    2. SINTAXE BSICA.............................................................................................................................. 8DELIMITANDO O CDIGO PHP ............................................................................................................................................. 8SEPARADOR DE INSTRUES ............................................................................................................................................... 8NOMES DE VARIVEIS.......................................................................................................................................................... 8COMENTRIOS..................................................................................................................................................................... 9

    Comentrios de uma linha: ............................................................................................................................................ 9Comentrios de mais de uma linha: ............................................................................................................................... 9

    3. CRIANDO OS PRIMEIROS SCRIPTS............................................................................................. 10PRIMEIRO EXEMPLO .......................................................................................................................................................... 10UTILIZANDO FORMULRIOS HTML................................................................................................................................... 11INTERAGINDO COM O BROWSER......................................................................................................................................... 12ACESSANDO BANCOS DE DADOS....................................................................................................................................... 13

    Conexo com o servidor ............................................................................................................................................... 13Seleo do banco de dados........................................................................................................................................... 13Execuo de queries SQL............................................................................................................................................. 14

    TRATAMENTO DE RESULTADOS DE QUERY SELECT ......................................................................................................... 15

    4. TIPOS............................................................................................................................................... 17TIPOS SUPORTADOS........................................................................................................................................................... 17

    Inteiros (integer ou long).............................................................................................................................................. 17Strings........................................................................................................................................................................... 18Arrays ........................................................................................................................................................................... 19

    LISTAS............................................................................................................................................................................... 19Objetos.......................................................................................................................................................................... 20Booleanos ..................................................................................................................................................................... 20

    TRANSFORMAO DE TIPOS............................................................................................................................................... 20Coeres ....................................................................................................................................................................... 20Transformao explcita de tipos ................................................................................................................................. 21Com a funo settype.................................................................................................................................................... 22

    5. CONSTANTES ................................................................................................................................. 23CONSTANTES PR-DEFINIDAS............................................................................................................................................. 23DEFININDO CONSTANTES ................................................................................................................................................... 23

    6. OPERADORES ................................................................................................................................ 24ARITMTICOS .................................................................................................................................................................... 24DE STRINGS........................................................................................................................................................................ 24DE ATRIBUIO.................................................................................................................................................................. 24BIT A BIT ............................................................................................................................................................................ 25LGICOS............................................................................................................................................................................ 25COMPARAO ................................................................................................................................................................... 25EXPRESSO CONDICIONAL................................................................................................................................................. 26DE INCREMENTO E DECREMENTO....................................................................................................................................... 26ORDEM DE PRECEDNCIA DOS OPERADORES ..................................................................................................................... 27

    7. ESTRUTURAS DE CONTROLE...................................................................................................... 28BLOCOS............................................................................................................................................................................. 28

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 4

    COMANDOS DE SELEO.................................................................................................................................................... 28if .................................................................................................................................................................................... 28switch ............................................................................................................................................................................ 30

    COMANDOS DE REPETIO................................................................................................................................................. 32while.............................................................................................................................................................................. 32do... while...................................................................................................................................................................... 32for.................................................................................................................................................................................. 33

    QUEBRA DE FLUXO ............................................................................................................................................................ 33Break............................................................................................................................................................................. 33Continue........................................................................................................................................................................ 34

    8. FUNES ........................................................................................................................................ 35DEFININDO FUNES ......................................................................................................................................................... 35VALOR DE RETORNO.......................................................................................................................................................... 35ARGUMENTOS.................................................................................................................................................................... 35

    Passagem de parmetros por referncia ...................................................................................................................... 36Argumentos com valores pr-definidos (default) .......................................................................................................... 37

    CONTEXTO......................................................................................................................................................................... 37ESCOPO.............................................................................................................................................................................. 37

    9. VARIVEIS....................................................................................................................................... 39O MODIFICADOR STATIC .................................................................................................................................................... 39VARIVEIS VARIVEIS....................................................................................................................................................... 40VARIVEIS ENVIADAS PELO NAVEGADOR........................................................................................................................... 40

    URLencode ................................................................................................................................................................... 40VARIVEIS DE AMBIENTE................................................................................................................................................... 41VERIFICANDO O TIPO DE UMA VARIVEL............................................................................................................................ 41

    Funo que retorna o tipo da varivel ......................................................................................................................... 41Funes que testam o tipo da varivel ......................................................................................................................... 41

    DESTRUINDO UMA VARIVEL............................................................................................................................................. 42VERIFICANDO SE UMA VARIVEL POSSUI UM VALOR.......................................................................................................... 42

    A funo isset ................................................................................................................................................................ 42A funo empty ............................................................................................................................................................. 42

    10. CLASSES E OBJETOS ................................................................................................................. 43CLASSE .............................................................................................................................................................................. 43OBJETO.............................................................................................................................................................................. 43A VARIVEL $THIS............................................................................................................................................................. 43SUBCLASSES...................................................................................................................................................................... 44CONSTRUTORES................................................................................................................................................................. 44

    12. CONCLUSES .............................................................................................................................. 46

    13. BIBLIOGRAFIA E REFERNCIAS................................................................................................ 47

    APNDICE 01 - FUNES PARA TRATAMENTO DE STRINGS ..................................................... 48FUNES RELACIONADAS A HTML................................................................................................................................... 48

    htmlspecialchars ........................................................................................................................................................... 48htmlentities.................................................................................................................................................................... 48nl2br.............................................................................................................................................................................. 48get_meta_tags ............................................................................................................................................................... 49strip_tags ...................................................................................................................................................................... 49urlencode ...................................................................................................................................................................... 49urldecode ...................................................................................................................................................................... 49

    FUNES RELACIONADAS A ARRAYS ................................................................................................................................. 50Implode e join ............................................................................................................................................................... 50split ............................................................................................................................................................................... 50explode.......................................................................................................................................................................... 50

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 5

    COMPARAES ENTRE STRINGS......................................................................................................................................... 51similar_text ................................................................................................................................................................... 51strcasecmp .................................................................................................................................................................... 51strcmp ........................................................................................................................................................................... 51strstr.............................................................................................................................................................................. 51stristr............................................................................................................................................................................. 52strpos ............................................................................................................................................................................ 52strrpos........................................................................................................................................................................... 52

    FUNES PARA EDIO DE STRINGS .................................................................................................................................. 52chop .............................................................................................................................................................................. 52ltrim .............................................................................................................................................................................. 52trim ............................................................................................................................................................................... 53strrev............................................................................................................................................................................. 53strtolower...................................................................................................................................................................... 53strtoupper ..................................................................................................................................................................... 53ucfirst............................................................................................................................................................................ 54ucwords......................................................................................................................................................................... 54str_replace.................................................................................................................................................................... 54

    FUNES DIVERSAS........................................................................................................................................................... 54chr................................................................................................................................................................................. 54ord ................................................................................................................................................................................ 54echo .............................................................................................................................................................................. 55print .............................................................................................................................................................................. 55strlen ............................................................................................................................................................................. 55

    APNDICE 02 - FUNES PARA TRATAMENTO DE ARRAYS ...................................................... 56FUNES GENRICAS........................................................................................................................................................ 56

    Array............................................................................................................................................................................. 56range............................................................................................................................................................................. 56shuffle ........................................................................................................................................................................... 57sizeof ............................................................................................................................................................................. 57

    FUNES DE NAVEGAO.............................................................................................................................................. 57reset .............................................................................................................................................................................. 57end ................................................................................................................................................................................ 57next ............................................................................................................................................................................... 57prev............................................................................................................................................................................... 57pos ................................................................................................................................................................................ 58key................................................................................................................................................................................. 58each .............................................................................................................................................................................. 58

    FUNES DE ORDENAO ................................................................................................................................................. 58sort................................................................................................................................................................................ 59rsort .............................................................................................................................................................................. 59asort.............................................................................................................................................................................. 59arsort ............................................................................................................................................................................ 59ksort .............................................................................................................................................................................. 59usort.............................................................................................................................................................................. 59uasort............................................................................................................................................................................ 60uksort ............................................................................................................................................................................ 60

    SOBRE O AUTOR DA APOSTILA ...................................................................................................... 61

    *18 )5(( '2&80(17$7,21 /,&(16(......................................................................................... 62

    1. Introduo

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 6

    O que PHP?

    PHP uma linguagem que permite criar sites WEB dinmicos, possibilitando uma interao com o

    usurio atravs de formulrios, parmetros da URL e links. A diferena de PHP com relao a linguagens semelhantes a

    Javascript que o cdigo PHP executado no servidor, sendo enviado para o cliente apenas html puro. Desta maneira

    possvel interagir com bancos de dados e aplicaes existentes no servidor, com a vantagem de no expor o cdigo fonte

    para o cliente. Isso pode ser til quando o programa est lidando com senhas ou qualquer tipo de informao confidencial.

    O que diferencia PHP de um script CGI escrito em C ou Perl que o cdigo PHP fica embutido no

    prprio HTML, enquanto no outro caso necessrio que o script CGI gere todo o cdigo HTML, ou leia de um outro

    arquivo.

    O que pode ser feito com PHP?

    Basicamente, qualquer coisa que pode ser feita por algum programa CGI pode ser feita tambm com PHP,

    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 grande nmero de

    bancos de dados, como dBase, Interbase, mSQL, mySQL, Oracle, Sybase, PostgreSQL e vrios outros. Construir umapgina baseada em um banco de dados torna-se uma tarefa extremamente simples com PHP.

    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.

    Como surgiu a linguagem PHP?

    A linguagem PHP foi concebida durante o outono de 1994 por Rasmus Lerdorf. As primeiras verses

    no foram disponibilizadas, tendo sido utilizadas em sua home-page apenas para que ele pudesse ter informaes sobre as

    visitas que estavam sendo feitas. A primeira verso utilizada por outras pessoas foi disponibilizada em 1995, e ficou

    conhecida como Personal Home Page Tools (ferramentas para pgina pessoal). Era composta por um sistema bastantesimples que interpretava algumas macros e alguns utilitrios que rodavam por trs das home-pages: um livro de visitas,

    um contador e algumas outras coisas.

    Em meados de 1995 o interpretador foi reescrito, e ganhou o nome de PHP/FI, o FI veio de um outro

    pacote escrito por Rasmus que interpretava dados de formulrios HTML (Form Interpreter). Ele combinou os scripts dopacote Personal Home Page Tools com o FI e adicionou suporte a mSQL, nascendo assim o PHP/FI, que cresceu bastante,e as pessoas passaram a contribuir com o projeto.

    Estima-se que em 1996 PHP/FI estava sendo usado por cerca de 15.000 sites pelo mundo, e em meados

    de 1997 esse nmero subiu para mais de 50.000. Nessa poca houve uma mudana no desenvolvimento do PHP. Ele

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 7

    deixou de ser um projeto de Rasmus com contribuies de outras pessoas para ter uma equipe de desenvolvimento maisorganizada. O interpretador foi reescrito por Zeev Suraski e Andi Gutmans, e esse novo interpretador foi a base para averso 3.

    Atualmente o uso do PHP3 vem crescendo numa velocidade incrvel, e j est sendo desenvolvida averso 4 do PHP.

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 8

    2. Sintaxe Bsica

    Delimitando o cdigo PHP

    O cdigo PHP fica embutido no prprio HTML. O interpretador identifica quando um cdigo PHP

    pelas seguintes tags:

    comandos

    O tipo de tags mais utilizado o terceiro, que consiste em uma abreviao do primeiro. Para utiliz-lo,

    necessrio habilitar a opo short-tags na configurao do PHP. O ltimo tipo serve para facilitar o uso por

    programadores acostumados sintaxe de ASP. Para utiliz-lo tambm necessrio habilit-lo no PHP, atravs do arquivo

    de configurao php.ini.

    Separador de instrues

    Entre cada instruo em PHP preciso utilizar o ponto-e-vrgula, assim como em C, Perl e outras

    linguagens mais conhecidas. Na ltima instruo do bloco de script no necessrio o uso do ponto-e-vrgula, mas por

    questes estticas recomenda-se o uso sempre.

    Nomes de variveis

    Toda varivel em PHP tem seu nome composto pelo caracter $ e uma string, que deve iniciar por umaletra ou o caracter _. PHP case sensitive, ou seja, as variveis $vivas e $VIVAS so diferentes. Por isso preciso termuito cuidado ao definir os nomes das variveis. bom evitar os nomes em maisculas, pois como veremos mais adiante,o PHP j possui alguma variveis pr-definidas cujos nomes so formados por letras maisculas.

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 9

    Comentrios

    H dois tipos de comentrios em cdigo PHP:

    Comentrios de uma linha:

    Marca como comentrio at o final da linha ou at o final do bloco de cdigo PHP o que vier antes.

    Pode ser delimitado 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 o delimitador de final de cdigo PHP ( ?> ) estiver dentro de um comentrio, no ser reconhecido pelointerpretador.

    Exemplos:

    */

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 10

    3. Criando os primeiros scripts

    Primeiro Exemplo

    Neste exemplo, criaremos um script com uma sada simples, que servir para testar se a instalao foi

    feita corretamente:

    Aprendendo PHP

    Salve o arquivo como primeiro.php3 no diretorio de documentos do Apache (ou o Web Serverescolhido). Abra uma janela do navegador e digite o endereo http://localhost/primeiro.php3.Verificando o cdigo fonte da pgina exibida, temos o seguinte:

    Aprendendo PHP

    Primeiro Script

    Isso mostra como o PHP funciona. O script executado no servidor, ficando disponvel para o usurio

    apenas o resultado. Agora vamos escrever um script que produza exatamente o mesmo resultado utilizando uma varivel:

    Aprendendo PHP

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 11

    Utilizando formulrios HTML

    Ao clicar num boto Submit em um formulrio HTML as informaes dos campos sero enviadas ao

    servidor especificado para que possa ser produzida uma resposta. O PHP trata esses valores como variveis, cujo nome onome do campo definido no formulrio. O exemplo a seguir mostra isso, e mostra tambm como o cdigo PHP pode ser

    inserido em qualquer parte do cdigo HTML:

    Aprendendo PHP

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 12

    Interagindo com o browser

    PHP tambm permite interagir com informaes do browser automaticamente. Por exemplo, o script a

    seguir mostra informaes sobre o browser do usurio. As figuras 03 e 04 mostram o resultado visto no Netscape

    Communicator e o Microsoft Internet Explorer, respectivamente.

    Aprendendo PHP

    [Imagem18] [Imagem19]figura 03 figura 04

    Observe que o resultado mostra caractersticas de cada browser, como a verso, e no caso do

    Communicator at o idioma (en). Com isso, se voc criar uma pgina com recursos disponveis somente no InternetExplorer, por exemplo, pode esconder o cdigo dos outros browsers, com um cdigo semelhante ao seguinte:

    Aprendendo PHP

    Neste exemplo, ser apenas exibido um texto informando se est sendo utilizado o Microsoft Internet

    Explorer ou no, mas para outras funes poderia ser utilizado algo semelhante.

    bom notar o surgimento de mais uma funo no cdigo anterior: strpos(string1,string2).Essa funo retorna a posio da primeira apario de string2 em string1, contando a partir de zero, e no retorna valor

    algum se no ocorrer. Assim, para testar se a string $HTTP_USER_AGENT contm a string MSIE, basta testar sestrpos devolve algum valor.

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 13

    Acessando Bancos de DadosNeste documento todos os exemplos referentes a acesso de bancos de dados utilizaro o gerenciador de

    banco de dados MySQL, que pode ser copiado gratuitamente no site http://www.mysql.org.Para interagir com uma base de dados SQL existem trs comandos bsicos que devem ser utilizados: um

    que faz a conexo com o servidor de banco de dados, um que seleciona a base de dados a ser utilizada e um terceiro que

    executa uma query SQL.

    Conexo com o servidorA conexo com o servidor de banco de dados mySQL em PHP feita atravs do comando

    mysql_connect, que tem a seguinte sintaxe:

    int mysql_connect(string /*host [:porta]*/ , string /*login*/ , string/*senha*/ );

    Os parmetros so bastante simples: o endereo do servidor(host), o nome do usurio (login) e a senhapara a conexo. A funo retorna um valor inteiro, que o identificador da conexo estabelecida e dever ser armazenado

    numa varivel para ser utilizado depois. No nosso exemplo, temos como servidor de banco de dados a mesma mquina que

    roda o servidor http, como login o usurio root e senha phppwd:

    $conexao = mysql_connect(localhost, root, phppwd);

    Assim, se a conexo for bem sucedida (existir um servidor no endereo especificado que possua o usuriocom a senha fornecida), o identificador da conexo fica armazenado na varivel $conexo.

    Seleo do banco de dadosUma vez conectado, preciso selecionar o banco de dados existente no servidor com o qual desejamos

    trabalhar. Isso feito atravs da funo int mysql_select_db, que possui a seguinte sintaxe:

    int mysql_select_db(string /*nome_base*/, int /*conexao*/ );

    O valor de retorno 0 se o comando falhar, e 1 em caso de sucesso. O nome da base de dados a

    selecionar o primeiro parmetro fornecido, seguido pelo identificador da conexo. Se este for omitido, o interpretador

    PHP tentar utilizar a ltima conexo estabelecida. Recomenda-se sempre explicitar esse valor, para facilitar a legibilidade

    do cdigo. No nosso exemplo, a base de dados a ser selecionada possui o nome ged:

    mysql_select_db(ged, $conexao);

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 14

    Aps a execuo desse comando qualquer consulta executada para aquela conexo utilizar a base de

    dados selecionada.

    Execuo de queries SQLAps estabelecida a conexo e selecionada a base de dados a ser utilizada, quase toda a interao com o

    servidor mySQL pode ser feita atravs de consultas escritas em SQL (Structured Query Language), com o comandomysql_query, que utiliza a seguinte sintaxe:

    int mysql_query(string consulta, int [conexao] );

    O valor de retorno 0 se falhar ou 1 em caso de sucesso. Sucesso aqui significa que a consulta est

    sintaticamente correta e foi executada no servidor. Nenhuma informao sobre o resultado retornada deste comando, ou

    at mesmo se o resultado o esperado. No caso da consulta ser um comando SELECT, o valor de retorno um valor

    interno que identifica o resultado, que poder ser tratado com a funo mysql_result() e outras. A string query nodeve conter ponto-e-vrgula no final do comando, e o identificador da conexo opcional. Vamos criar uma tabela como

    exemplo:

    $cria = CREATE TABLE exemplo (codigo INT AUTO_INCREMENT PRIMARY KEY, nomeCHAR(40), email CHAR(50));

    mysql_query($cria, $conexao);

    Agora vejamos como ficou o cdigo completo para executar uma query SQL numa base de dadosmySQL, com um exemplo que cria uma tabela chamada exemplo e adiciona alguns dados:

    $conexao = mysql_connect(localhost, root, phppwd);mysql_select_db(ged, $conexao);

    $cria = CREATE TABLE exemplo (codigo INT AUTO_INCREMENT PRIMARYKEY, nome CHAR(40), email CHAR(50));

    $insere1 = INSERT INTO exemplo (nome,email) VALUES (MauricioVivas,[email protected]);

    $insere2 = INSERT INTO exemplo (nome,email) VALUES (Jose daSilva,[email protected]);

    $insere3 = INSERT INTO exemplo (nome,email) VALUES (FernandoHenrique Cardoso,[email protected]);

    $insere4 = INSERT INTO exemplo (nome,email) VALUES (BillClinton,[email protected]);

    mysql_query($cria, $conexao);mysql_query($insere1, $conexao);mysql_query($insere2, $conexao);mysql_query($insere3, $conexao);mysql_query($insere4, $conexao);

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 15

    Tratamento de resultados de query SELECT

    Ao executar uma query SQL SELECT atravs do comando mysql_query, o identificador doresultado deve ser armazenado numa varivel que pode ser tratada de diversas formas. Duas maneiras interessantes de

    faz-lo usam o comando mysql_result e o comando mysql_fetch_row, respectivamente.

    O comando mysql_result tem a seguinte sintaxe:

    int mysql_result(int resultado, int linha, mixed [campo]);

    Onde resultado o identificador do resultado, obtido com o retorno da funo mysql_query,

    linha especifica a tupla a ser exibida, j que uma query SELECT pode retornar diversas tuplas, e campo o identificadordo campo a ser exibido, sendo o tipo descrito como mixed pela possibilidade de ser de diversos tipos (neste caso, inteiroou string). Vejamos um exemplo utilizando a tabela criada anteriormente:

    $consulta = SELECT nome, email FROM exemplo WHERE email LIKEvivas;

    $resultado = mysql_query($consulta, $conexao);

    printf("Nome: ", mysql_result($resultado,0,"nome"), \n);printf("e-mail: ", mysql_result($resultado,0,"email"),);

    Com o exemplo acima, o resultado ser:

    Nome: Mauricio Vivase-mail: [email protected]

    importante notar que a utilizao desta funo um pouco trabalhosa, j que no caso de um resultadocom vrias linhas preciso controlar o nmero de linhas para trat-las (pode-se utilizar a funomysql_num_rows(int resultado), que retorna o nmero de linhas de um resultado), e no caso de umaalterao no nome do campo preciso alterar tambm a maneira de trat-lo. Por isso mais aconselhvel que se use uma

    outra funo, como por exemplo mysql_fetch_row, que possui a seguinte sintaxe:

    array mysql_fetch_row(int result);

    A varivel resultado o identificador da memria de resultados, obtido como retorno da funo

    mysql_query. O resultado produzido por esta funo de retirar a primeira linha da memria de resultados, se

    houver, e coloc-la num array. Assim torna-se mais fcil tratar um resultado com vrias linhas, e sem utilizar os nomes dos

    campos na rotina de tratamento do resultado:

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 16

    $consulta = SELECT nome, email FROM exemplo;

    $resultado = mysql_query($consulta, $conexao);

    echo "\n";echo "Nomee-mail\n";while ($linha = mysql_fetch_row($resultado)) { printf("$linha[0]); printf("$linha[1]);}echo "\n";

    O cdigo acima ir imprimir todos os registros da tabela exemplo numa tabela html. Se o programador

    desejar pular alguma(s) linha(s) do resultado, poder utilizar a funo mysql_data_seek, que tem por objetivodefinir qual ser a prxima linha da memria de resultados a ser impressa. Sua sintaxe :

    int mysql_data_seek(int resultado, int linha);

    Sendo resultado o identificador do resultado e linha o numero da linha. Retorna 0 em caso de

    falha, e um valor diferente de zero em caso de sucesso.

    Existem diversas outras funes para o tratamento de resultados, que armazenam as linhas em arrays e

    objetos, assim como outras funes para administrar o banco de dados, mas como este documento trata-se de umaintroduo, inicialmente no tratar tpicos mais avanados.

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 17

    4. 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 dediferentes tipos em diferentes momentos da execuo do script. Por este motivo no necessrio

    declarar o tipo de uma varivel para us-la. O interpretador PHP decidir qual o tipo daquela varivel,

    verificando o contedo em tempo de execuo.

    Ainda assim, permitido converter os valores de um tipo para outro desejado,

    utilizando o typecasting ou a funo settype (ver adiante).

    Inteiros (integer ou long)Uma varivel pode conter um valor inteiro com atribuies que sigam as seguintes sintaxes:

    $vivas = 1234; # inteiro positivo na base decimal$vivas = -234; # inteiro negativo na base decimal$vivas = 0234; # inteiro na base octal-simbolizado pelo 0

    # equivale a 156 decimal$vivas = 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.

    Como a escolha feita pelo interpretador PHP de maneira transparente para o usurio, podemos afirmar que os tipos so

    iguais.

    Nmeros em Ponto Flutuante (double ou float)Uma varivel pode ter um valor em ponto flutuante com atribuies que sigam as seguintes sintaxes:

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 18

    $vivas = 1.234;$vivas = 23e4; # equivale a 230.000

    Strings

    Strings podem ser atribudas de duas maneiras:

    a) utilizando aspas simples ( ' ) Desta maneira, o valor da varivel ser exatamente o texto contido entre as aspas (comexceo de \\ e \' ver tabela abaixo)

    b) utilizando aspas duplas ( " ) Desta maneira, qualquer varivel ou caracter de escape ser expandido antes de seratribudo.

    Exemplo:

    A sada desse script ser "---$teste--\n".

    A sada desse script ser "---Mauricio--" (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

    No apndice 01 est disponvel uma lista das funes utilizadas no tratamento de strings.

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 19

    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 ndices

    podem ser valores de qualquer tipo e no somente inteiros. Inclusive, se os ndices forem todos inteiros, estes no precisam

    formar um intervalo contnuo

    Como a checagem de tipos em PHP dinmica, valores de tipos diferentes podem ser usados como

    ndices de array, assim como os valores mapeados tambm podem ser de diversos tipos.Exemplo:

    Equivalentemente, pode-se escrever:

    ListasAs listas so utilizadas em PHP para realizar atribuies mltiplas. Atravs de listas possvel atribuir

    valores que 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 as trs atribuies

    foram bem sucedidas porque ao inicializar um array sem especificar os ndices eles passam a ser inteiros, a partir do zero.

    Um fator importante que cada varivel da lista possui um ndice inteiro e ordinal, 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$b == um$c == dois$d == tres

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 20

    Devemos observar que varivel $a no foi atribudo valor, pois no array no existe elemento com ndice0 (zero). Outro detalhe importante que o valor tres foi atribudo varivel $d, e no a $b, pois seu ndice 3, o mesmoque $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, no

    podendo ser acessados de maneira alguma pelo programador. De maneira diferente do array, uma lista no pode ser

    atribuda a uma varivel, servindo apenas para fazer mltiplas atribuies atravs de um array.

    No apndice 02 est disponvel uma lista das funes mais comuns para o tratamento de arrays.

    ObjetosUm objeto pode ser inicializado utilizando o comando new para instanciar uma classe para uma varivel.

    Exemplo:class teste {

    function nada() {echo nada;

    }}

    $vivas = new teste;$vivas -> nada();

    A utilizao de objetos ser mais detalhada mais frente.

    BooleanosPHP no possui um tipo booleano, mas capaz de avaliar expresses e retornar true ou false, atravs do

    tipo integer: usado o valor 0 (zero) para representar o estado false, e qualquer valor diferente de zero (geralmente 1)para representar o estado true.

    Transformao de tipos

    A transformao de tipos em PHP pode ser feita das seguintes maneiras:

    CoeresQuando ocorrem determinadas operaes (+, por exemplo) entre dois valores de tipos diferentes, o PHP

    converte o valor de um deles automaticamente (coero). interessante notar que se o operando for uma varivel, seuvalor no ser alterado.

    O tipo para o qual os valores dos operandos sero convertidos determinado da seguinte forma: Se um

    dos operandos for float, o outro ser convertido para float, seno, se um deles for integer, o outro ser

    convertido para integer.

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 21

    Exemplo:$vivas = 1; // $vivas a string 1$vivas = $vivas + 1; // $vivas o integer 2$vivas = $vivas + 3.7;// $vivas o double 5.7$vivas = 1 + 1.5 // $vivas o double 2.5

    Como podemos notar, o PHP converte string para integer ou double mantendo o valor. O

    sistema utilizado pelo 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

    valor obtido ser double;

    - Se a string contiver um e ou E em sua parte numrica a ser analisada, o valor seguinte ser

    considerado como expoente da base 10, e o valor obtido ser double;

    Exemplos:$vivas = 1 + 10.5; // $vivas == 11.5$vivas = 1 + -1.3e3; // $vivas == -1299$vivas = 1 + teste10.5; // $vivas == 1$vivas = 1 + 10testes; // $vivas == 11$vivas = 1 + " 10testes"; // $vivas == 11$vivas = 1 + "+ 10testes"; // $vivas == 1

    Transformao explcita de tipos

    A sintaxe do typecast de PHP semelhante ao C: basta escrever o tipo entre parenteses antes do valor

    Exemplo:$vivas = 15; // $vivas integer (15)$vivas = (double) $vivas // $vivas double (15.0)$vivas = 3.9 // $vivas double (3.9)$vivas = (int) $vivas // $vivas integer (3)

    // 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.

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 22

    Com a funo settype

    A funo settype converte uma varivel para o tipo especificado, que pode ser integer, double,

    string, array ou object.

    Exemplo:$vivas = 15; // $vivas integersettype($vivas,double) // $vivas double

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 23

    5. Constantes

    Constantes pr-definidas

    O PHP possui algumas constantes pr-definidas, indicando a verso do PHP, o Sistema Operacional do

    servidor, o arquivo em execuo, e diversas outras informaes. Para ter acesso a todas as constantes pr-definidas, pode-

    se utilizar a funo phpinfo(), que exibe uma tabela contendo todas as constantes pr-definidas, assim comoconfiguraes da mquina, sistema operacional, servidor http e verso do PHP instalada.

    Definindo constantes

    Para definir constantes utiliza-se a funo define. Uma vez definido, o valor de uma constante no

    poder mais ser alterado. Uma constante s pode conter valores escalares, ou seja, no pode conter nem um array nem umobjeto. A assinatura da funo define a seguinte:

    int define(string nome_da_constante, mixed valor);

    A funo retorna true se for bem-sucedida. Veja um exemplo de sua utilizao a seguir:

    define ("pi", 3.1415926536);$circunf = 2*pi*$raio;

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 24

    6. Operadores

    Aritmticos

    S podem ser utilizados quando os operandos so nmeros (integer ou float). Se forem de outro tipo,tero seus valores convertidos antes da realizao da operao.

    + adio- subtrao* multiplicao/ diviso% mdulo

    de strings

    S h um operador exclusivo para strings:

    . concatenao

    de atribuio

    Existe um operador bsico de atribuio e diversos derivados. Sempre retornam o valor atribudo. No

    caso dos operadores derivados de atribuio, a operao feita entre os dois operandos, sendo atribudo o resultado para o

    primeiro. A atribuio sempre por valor, e no por referncia.

    = atribuio simples+= atribuio com adio-= atribuio com subtrao*= atribuio com multiplicao/= atribuio com diviso%= atribuio com mdulo.= atribuio com concatenao

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 25

    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 right

    LgicosUtilizados para inteiros representando valores booleanos

    and e lgico

    or ou lgico

    xor 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

    um valor booleano.

    == igual a

    != diferente de

    < menor que

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 26

    > maior que

    = maior ou igual a

    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 de

    expresso2. 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 valorda varivel antes de increment-la ou decrement-la. Quando utilizado depois, retorna o valor da varivel j incrementadoou decrementado.

    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

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 27

    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 ||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

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 28

    7. Estruturas de ControleAs 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 relacion-los com determinado

    comando ou funo. Em comandos como if, for, while, switch e em declaraes de funes blocos podem ser

    utilizados para permitir que um comando faa parte do contexto desejado. Blocos em PHP so delimitados pelos caracteres{ e }. A utilizao dos delimitadores de bloco em uma parte qualquer do cdigo no relacionada com os comandoscitados ou funes no produzir efeito algum, e ser tratada normalmente pelo interpretador.

    Exemplo:if ($x == $y) comando1; comando2;

    Para que comando2 esteja relacionado ao if preciso utilizar um bloco:

    if ($x == $y){ comando1; comando2;}

    Comandos de seleo

    Tambm chamados de condicionais, os comandos de seleo permitem executar comandos ou blocos de

    comandos 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 o

    resultado for true (valor diferente de zero). Ele possui duas sintaxes:

    if (expresso) comando;

    if (expresso): comando; . . .

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 29

    comando;endif;

    Para incluir mais de um comando no if da primeira sintaxe, preciso utilizar um bloco, demarcado por

    chaves.

    O else um complemento opcional para o if. Se utilizado, o comando ser executado se a expresso

    retornar o valor false (zero). Suas duas sintaxes so:

    if (expresso) comando;else comando;

    if (expresso): comando; . . .

    comando;else comando; . . .

    comando;endif;

    A seguir, temos um exemplo do comando if utilizado com else:

    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 diversos

    comandos ou blocos de comandos. Para facilitar o entendimento de uma estrutura do tipo:

    if (expressao1) comando1;else if (expressao2) comando2; else if (expressao3) comando3; else comando4;

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 30

    foi criado o comando, tambm opcional elseif. Ele tem a mesma funo de um else e um if

    usados sequencialmente, como no exemplo acima. Num mesmo if podem ser utilizados diversos elseifs, ficando

    essa utilizao 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

    do comando if fica das seguintes maneiras:

    if (expressao1) comando;[ elseif (expressao2) comando; ][ else comando; ]

    if (expressao1) : comando; . . .

    comando;[ elseif (expressao2) comando; . . .

    comando; ][ else comando; . . .

    comando; ]endif;

    switch

    O comando switch atua de maneira semelhante a uma srie de comandos if na mesma expresso.

    Frequentemente o programador pode querer comparar uma varivel com diversos valores, e executar um cdigo diferente a

    depender de qual valor igual ao da varivel. Quando isso for necessrio, deve-se usar o comando switch. O exemploseguinte mostra dois trechos de cdigo que fazem a mesma coisa, sendo que o primeiro 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;

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 31

    case 1: print i igual a um; break;case 2: print i igual a dois; break;}

    importante compreender o funcionamento do switch para no cometer enganos. O comandoswitch testa linha 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 usa-se o comando break, quebrando o fluxo e fazendo com que o cdigo seja executado da maneira desejada.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;

    }

    No exemplo acima, se $i for igual a zero, os trs comandos print sero executados. Se $i for igual a 1,os dois 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

    podem ser do tipo inteiro. Em PHP permitido usar valores do tipo string como elementos de teste do comando switch. O

    exemplo abaixo funciona perfeitamente:

    switch ($s) {case casa: print A casa amarela;case arvore: print a rvore bonita;case lampada: print joao apagou a lampada;

    }

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 32

    comandos de repetio while

    O while o comando de repetio (lao) mais simples. Ele testa uma condio e executa um comando,ou um bloco de comandos, at que a condio testada seja falsa. Assim como o if, o while tambm possui duassintaxes alternativas:

    while () ;

    while (): ; . . .

    ;endwhile;

    A expresso s testada a cada vez que o bloco de instrues termina, alm do teste inicial. Se o valor da

    expresso passar a ser false no meio do bloco de instrues, a execuo segue at o final do bloco. Se no teste inicial a

    condio for avaliada como false, o bloco de comandos no ser executado.

    O exemplo a seguir mostra o uso do while para imprimir os nmeros de 1 a 10:$i = 1;while ($i

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 33

    for

    O tipo de lao mais complexo o for. Para os que programam em C, C++ ou Java, a assimilao do

    funcionamento do for natural. Mas para aqueles que esto acostumados a linguagens como Pascal, h uma grande

    mudana para o uso do for. As duas sintaxes permitidas so:

    for (;;) ;

    for (;;) : ; . . .

    ;endfor;

    As trs expresses que ficam entre parnteses tm as seguintes finalidades:

    Inicializao: comando ou sequencia de comandos a serem realizados antes do inicio do lao. Serve para

    inicializar variveis.

    Condio: Expresso booleana que define se os comandos que esto dentro do lao sero executados ou

    no. Enquanto a expresso for verdadeira (valor diferente de zero) os comandos sero executados.Incremento: Comando executado ao final de cada execuo do lao.

    Um comando for funciona de maneira semelhante a um while escrito da seguinte forma:

    while () {comandos...

    }

    Quebra de fluxo

    BreakO comando break pode ser utilizado em laos de do, for e while, alm do uso j visto no

    comando switch. Ao encontrar um break dentro de um desses laos, o interpretador PHP para imediatamente a

    execuo do lao, seguindo normalmente o fluxo do script.

    while ($x > 0) { ...

    if ($x == 20) {

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 34

    echo erro! x = 20; break; ...

    }

    No trecho de cdigo acima, o lao while tem uma condio para seu trmino normal ($x

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 35

    8. Funes

    Definindo funes

    A sintaxe bsica para definir uma funo :

    function nome_da_funo([arg1, arg2, arg3]) {Comandos;... ;[return ];

    }

    Qualquer cdigo PHP vlido pode estar contido no interior de uma funo. Como a checagem de tipos emPHP dinmica, o tipo de retorno no deve ser declarado, sendo necessrio que o programador esteja atento para que afuno retorne o tipo desejado. recomendvel que esteja tudo bem documentado para facilitar a leitura e compreenso docdigo. Para efeito de documentao, utiliza-se o seguinte formato de declarao de funo:

    tipo function nome_da_funcao(tipo arg1, tipo arg2, ...);

    Este formato s deve ser utilizado na documentao do script, pois o PHP no aceita a declarao de

    tipos. Isso significa que em muitos casos o programador deve estar atento ao tipos dos valores passados como parmetros,

    pois se no for passado o tipo esperado no emitido nenhum alerta pelo interpretador PHP, j que este no testa os tipos.

    Valor de retorno

    Toda funo pode opcionalmente retornar um valor, ou simplesmente executar os comandos e no

    retornar valor algum.

    No possvel que uma funo retorne mais de um valor, mas permitido fazer com que uma funo

    retorne um valor composto, como listas ou arrays.

    Argumentos

    possvel passar argumentos para uma funo. Eles devem ser declarados logo aps o nome da funo,entre parnteses, e tornam-se variveis pertencentes ao escopo local da funo. A declarao do tipo de cada argumento

    tambm utilizada apenas para efeito de documentao.

    Exemplo:

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 36

    function imprime($texto){ echo $texto;}

    imprime(teste de funes);

    Passagem de parmetros por referncia

    Normalmente, a passagem de parmetros em PHP feita por valor, ou seja, se o contedo da varivel foralterado, essa alterao no afeta a varivel original.

    Exemplo:

    function mais5($numero) { $numero += 5;}

    $a = 3;mais5($a); //$a continua valendo 3

    No exemplo acima, como a passagem de parmetros por valor, a funo mais5 intil, j que aps aexecuo sair da funo o valor anterior da varivel recuperado. Se a passagem de valor fosse feita por referncia, a

    varivel $a teria 8 como valor. O que ocorre normalmente que ao ser chamada uma funo, o interpretador salva todo oescopo atual, ou seja, os contedos das variveis. Se uma dessas variveis for passada como parmetro, seu contedo ficapreservado, pois a funo ir trabalhar na verdade com uma cpia da varivel. Porm, se a passagem de parmetros for

    feita por referncia, toda alterao que a funo realizar no valor passado como parmetro afetar a varivel que o contm.

    H duas maneiras de fazer com que uma funo tenha parmetros passados por referncia: indicando isso

    na declarao da funo, o que faz com que a pasagem de parmetros sempre seja assim; e tambm na prpria chamada dafuno. Nos dois casos utiliza-se o modificador &. Vejamos um exemplo que ilustra os dois casos:

    function mais5(&$num1, $num2) { $num1 += 5; $num2 += 5;}

    $a = $b = 1;mais5($a, $b); /* Neste caso, s $num1 ter seu valor alterado, pois

    a passagem por referncia est definida na declarao da funo. */

    mais5($a, &$b); /* Aqui as duas variveis tero seus valoresalterados. */

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 37

    Argumentos com valores pr-definidos (default)

    Em PHP possvel ter valores default para argumentos de funes, ou seja, valores que sero assumidosem caso de nada ser passado no lugar do argumento. Quando algum parmetro declarado desta maneira, a passagem domesmo na chamada da funo torna-se opcional.

    function teste($vivas = testando) { echo $vivas;}

    teste(); // imprime testandoteste(outro teste); // imprime outro teste

    bom lembrar que quando a funo tem mais de um parmetro, o que tem valor default deve serdeclarado por ltimo:

    function teste($figura = circulo, $cor) { echo a figura um , $figura, de cor $cor;}

    teste(azul);/* A funo no vai funcionar da maneira esperada, ocorrendo um erro

    no interpretador. A declarao correta : */

    function teste2($cor, $figura = circulo) { echo a figura um , $figura, de cor $cor;}

    teste2(azul);

    /* Aqui a funcao funciona da maneira esperada, ou seja, imprime otexto: a figura um crculo de cor azul */

    ContextoO contexto o conjunto de variveis e seus respectivos valores num determinado ponto do programa. Na

    chamada de uma funo, ao iniciar a execuo do bloco que contm a implementao da mesma criado um novo

    contexto, contendo as variveis declaradas dentro do bloco, ou seja, todas as variveis utilizadas dentro daquele blocosero eliminadas ao trmino da execuo da funo.

    EscopoO escopo de uma varivel em PHP define a poro do programa onde ela pode ser utilizada. Na maioria

    dos casos todas as variveis tm escopo global. Entretanto, em funes definidas pelo usurio um escopo local criado.

    Uma varivel de escopo global no pode ser utilizada no interior de uma funo sem que haja uma declarao.

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 38

    Exemplo:$vivas = Testando;

    function Teste() { echo $vivas;}

    Teste();

    O trecho acima no produzir sada alguma, pois a varivel $vivas de escopo global, e no pode serreferida num escopo local, mesmo que no haja outra com nome igual que cubra a sua visibilidade. Para que o scriptfuncione da forma desejada, a varivel global a ser utilizada deve ser declarada.

    Exemplo:$vivas = Testando;

    function Teste() { global $vivas; echo $vivas;}

    Teste();

    Uma declarao global pode conter vrias variveis, separadas por vrgulas. Uma outra maneira de

    acessar variveis de escopo global dentro de uma funo utilizando um array pr-definido pelo PHP cujo nome $GLOBALS. O ndice para a varivel referida o proprio nome da varivel, sem o caracter $. O exemplo acima e o abaixoproduzem o mesmo resultado:

    Exemplo:$vivas = "Testando";

    function Teste() { echo $GLOBALS["vivas"]; // imprime $vivas echo $vivas; // no imprime nada}

    Teste();

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 39

    9. Variveis

    O modificador static

    Uma varivel esttica visvel num escopo local, mas ela inicializada apenas uma vez e seu valor no

    perdido quando a execuo do script deixa esse escopo. Veja o seguinte exemplo:

    function Teste() { $a = 0; echo $a; $a++;}

    O ltimo comando da funo intil, pois assim que for encerrada a execuo da funo a varivel $aperde seu valor. J no exemplo seguinte, a cada chamada da funo a varivel $a ter seu valor impresso e serincrementada:

    function Teste() { static $a = 0; echo $a; $a++;}

    O modificador static muito utilizado em funes recursivas, j que o valor de algumas variveis precisaser mantido. Ele funciona da seguinte forma: O valor das variveis declaradas como estticas mantido ao terminar a

    execuo da funo. Na prxima execuo da funo, ao encontrar novamente a declarao com static, o valor da varivel

    recuperado.

    Em outras palavras, uma varivel declarada como static tem o mesmo tempo de vida que uma

    varivel global, porm sua visibilidade restrita ao escopo local em que foi declarada e s recuperada aps a declarao.

    Exemplo:

    function Teste() { echo "$a"; static $a = 0; $a++;}

    O exemplo acima no produzir sada alguma. Na primeira execuo da funo, a impresso ocorre antes

    da atribuio de um valor funo, e portanto o contedo de $a nulo (string vazia). Nas execues seguintes da funoTeste() a impresso ocorre antes da recuperao do valor de $a, e portanto nesse momento seu valor ainda nulo. Paraque a funo retorne algum valor o modificador static deve ser utilizado.

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 40

    Variveis Variveis

    O PHP tem um recurso conhecido como variveis variveis, que consiste em variveis cujos nomestambm so variveis. Sua utilizao feita atravs do duplo cifro ($$).

    $a = teste;$$a = Mauricio Vivas;

    O exemplo acima e equivalente ao seguinte:

    $a = teste;$teste = Mauricio Vivas;

    Variveis enviadas pelo navegador

    Para interagir com a navegao feita pelo usurio, necessrio que o PHP possa enviar e receber

    informaes para o software de navegao. A maneira de enviar informaes, como j foi visto anteriormente, geralmente atravs de um comando de impresso, como o echo. Para receber informaes vindas do navegador atravs de um link ou

    um formulrio html o PHP utiliza as informaes enviadas atravs da URL. Por exemplo: se seu script php est localizado

    em http://localhost/teste.php3 e voc o chama com a urlhttp://localhost/teste.php3?vivas=teste, automaticamente o PHP criar uma varivel com onome $vivas contendo a string teste. Note que o contedo da varivel est no formato urlencode. Os formulrioshtml j enviam informaes automaticamente nesse formato, e o PHP decodifica sem necessitar de tratamento peloprogramador.

    URLencode

    O formato urlencode obtido substituindo os espaos pelo caracter + e todos os outros caracteres

    no alfa-numricos (com exceo de _) pelo caracter % seguido do cdigo ASCII em hexadecimal.

    Por exemplo: o texto Testando 1 2 3 !! em urlencode fica Testando+1+2+3+%21%21

    O PHP possui duas funes para tratar com texto em urlencode. Seguem suas sintaxes:

    string urlencode(string texto);string urldecode(string texto);

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 41

    Essas funes servem respectivamente para codificar ou decodificar um texto passado

    como argumento. Para entender melhor o que um argumento e como funciona uma funo, leia o

    tpico funes.

    Variveis de ambiente

    O PHP possui diversas variveis de ambiente, como a $PHP_SELF, por exemplo, que contm o nome eo path do prprio arquivo. Algumas outras contm informaes sobre o navegador do usurio, o servidor http, a verso do

    PHP e diversas informaes. Para ter uma listagem de todas as variveis e constantes de ambiente e seus respectivos

    contedos, deve-se utilizar a funo phpinfo().

    Verificando o tipo de uma varivelPor causa da tipagem dinmica utilizada pelo PHP, nem sempre possvel saber qual o tipo de uma

    varivel em determinado instantese no contar com a ajuda de algumas funes que ajudam a verificar isso. A verificaopode ser feita de duas maneiras:

    Funo que retorna o tipo da varivel

    Esta funo a gettype. Sua assinatura a seguinte:

    string gettype(mixed var);

    A palavra mixed indica que a varivel var pode ser de diversos tipos.

    A funo gettype pode retornar as seguintes strings: integer, double, string,array, object e unknown type.

    Funes que testam o tipo da varivel

    So as funes is_int, is_integer, is_real, is_long, is_float,

    is_string, is_array e is_object. Todas tm o mesmo formato, seguindo modelo da assinatura a seguir:

    int is_integer(mixed var);

    Todas essas funes retornam true se a varivel for daquele tipo, e false em caso contrrio.

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 42

    Destruindo uma varivel

    possvel desalocar uma varivel se ela no for usada posteriormente atravs da funo unset, que tema seguinte assinatura:

    int unset(mixed var);

    A funo destri a varivel, ou seja, libera a memria ocupada por ela, fazendo com que ela deixe deexistir. Se mais na frente for feita uma chamada varivel, ser criada uma nova varivel de mesmo nome e de contedo

    vazio, a no ser que a chamada seja pela funo isset. Se a operao for bem sucedida, retorna true.

    Verificando se uma varivel possui um valor

    Existem dois tipos de teste que podem ser feitos para verificar se uma varivel est setada: com a funo

    isset e com a funo empty.

    A funo isset

    Possui o seguinte prottipo:

    int isset(mixed var);

    E retorna true se a varivel estiver setada (ainda que com uma string vazia ou o valor zero), e falseem caso contrrio.

    A funo empty

    Possui a seguinte assinatura:

    int empty(mixed var);

    E retorna true se a varivel no contiver um valor (no estiver setada) ou possuir valor 0 (zero) ou umastring vazia. Caso contrrio, retorna false.

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 43

    10. Classes e Objetos

    ClasseUma classe um conjunto de variveis e funes relacionadas a essas variveis. Uma vantagem da

    utilizao poder usufruir do recurso de encapsulamento de informao. Com o encapsulamento o usurio de uma classe

    no precisa saber como ela implementada, bastando para a utilizao conhecer a interface, ou seja, as funesdisponveis. Uma classe um tipo, e portanto no pode ser atribuda a uma varivel. Para definir uma classe, deve-se

    utilizar a seguinte sintaxe:

    class Nome_da_classe { var $variavel1; var $variavel2; function funcao1 ($parametro) { /* === corpo da funo === */ }}

    ObjetoComo foi dito anteriormente, classes so tipos, e no podem ser atribudas a variveis. Variveis do tipo

    de uma classe so chamadas de objetos, e devem ser criadas utilizando o operador new, seguindo o exemplo abaixo:

    $variavel = new $nome_da_classe;

    Para utilizar as funes definidas na classe, deve ser utilizado o operador ->, como no exemplo:

    $variavel->funcao1(

    A varivel $thisNa definio de uma classe, pode-se utilizar a varivel $this, que o prprio objeto. Assim, quando

    uma classe instanciada em um objeto, e uma funo desse objeto na definio da classe utiliza a varivel $this, essavarivel significa o objeto que estamos utilizando.

    Como exemplo da utilizao de classes e objetos, podemos utilizar a classe conta, que define uma contabancria bastante simples, com funes para ver saldo e fazer um crdito.

    class conta { var $saldo; function saldo() { return $this->saldo; } function credito($valor) { $this->saldo += $valor;

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 44

    }}

    $minhaconta = new conta;$minhaconta->saldo(); // a variavel interna no foi

    // inicializada, e no contm// valor algum

    $minhaconta->credito(50);$minhaconta->saldo(); // retorna 50

    SubClassesUma classe pode ser uma extenso de outra. Isso significa que ela herdar todas as variveis e funes da

    outra classe, e ainda ter as que forem adicionadas pelo programador. Em PHP no permitido utilizar herana mltipla,

    ou seja, uma classe pode ser extenso de apenas uma outra.Para criar uma classe extendida, ou derivada de outra, deve serutilizada a palavra reservada extends, como pode ser visto no exemplo seguinte:

    class novaconta extends conta { var $numero; function numero() { return $this->numero; }}

    A classe acima derivada da classe conta, tendo as mesmas funes e variveis, com a adio da varivel

    $numero e a funo numero().

    ConstrutoresUm construtor uma funo definida na classe que automaticamente chamada no momento em que a

    classe instanciada (atravs do operador new). O construtor deve ter o mesmo nome que a classe a que pertence. Veja oexemplo:

    class conta { var $saldo;

    function conta () { $this.saldo = 0; }

    function saldo() { return $this->saldo; } function credito($valor) { $this->saldo += $valor; }}

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 45

    Podemos perceber que a classe conta agora possui um construtor, que inicializa a varivel $saldo como valor 0.

    Um construtor pode conter argumentos, que so opcionais, o que torna esta ferramenta mais poderosa. No

    exemplo acima, o construtor da classe conta pode receber como argumento um valor, que seria o valor inicial da conta.

    Vale observar que para classes derivadas, o construtor da classe pai no automaticamente herdado

    quando o construtor da classe derivada chamado.

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 46

    12. Concluses

    A realizao deste Projeto Supervisionado possibilitou o estudo da linguagem PHP, que se mostrou umaferramenta poderosa e simples de utilizar na construo de sites para a World Wide Web dinmicos, possibilitando uma

    maior interao com o usurio e a armazenagem das informaes em Bancos de Dados.

    Aps a concluso da aplicao, tornou-se claro que a combinao de scripts server-side, como o PHP,

    com scripts client-side, como JavaScript, por exemplo, possibilita um maior aproveitamento dos recursos disponveis para

    criar pginas dinmicas, e no processo de criao deve-se ponderar bastante para concluir qual dos dois tipos de scripts

    deve ser utilizado para determinado fim.

    Entre as linguagens de script server-side, PHP surgiu como uma tima opo, por diversos motivos: o

    custo de aquisio, que no existe; a portabilidade, permitindo que uma aplicao seja desenvolvida em uma plataformapara ser executada em outra; a simplicidade, j que os scripts ficam no prprio cdigo html, e possuem uma sintaxebastante simples; a possibilidade de trabalhar com diversos bancos de dados e servidores http, alm do grande nmero de

    funes pr-definidas, entre outras coisas.

    Por esses e outros motivos, possvel afirmar que o estudo sobre PHP foi bastante enriquecedor, por ter

    produzido uma documentao em portugus para a linguagem e ter motivado o aluno a continuar se dedicando ao tema.

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 47

    13. Bibliografia e RefernciasA pesquisa foi baseada no manual de PHP, disponvel em www.php.net, e em diversos tutoriais

    disponveis no site www.phpbuilder.com. Esses dois endereos contm uma vasta documentao sobre a linguagem, almde endereos para listas de discusso, onde pode-se solicitar ajuda de programadores mais experientes.

    Uma boa referncia em portugus a lista PHP para quem fala Portugus, que pode ser assinada noendereo www.egroups.com/group/php-pt/.

    Em ingls, alm dos endereos citados acima, uma boa fonte o site PHPWizard, que pode ser

    encontrado em www.phpwizard.net.

  • &RPLWr GH ,QFHQWLYR D 3URGXomR GR 6RIWZDUH *UDWXLWR H $OWHUQDWLYR &,36*$

    &XUVR GH /LQJXDJHP 3+3 ZZZFLSVJDRUJEU FXUVRV#FLSVJDRUJEU 3iJLQD 48

    APNDICE 01 - Funes paratratamento de strings

    Funes relacionadas a HTML htmlspecialchars

    string htmlspecialchars(string str);

    Retorna a string fornecida, substituindo os seguintes caracteres:

    & para '&'

    " para '"'

    < para '