Anda di halaman 1dari 49

Programao Web

Autor: Prof. Willamys Gomes Fonseca Arajo willamys.araujo@ifce.edu.br

Sumrio
1 2 INTRODUO ....................................................................................................................... 4 INTRODUO AO PHP E PREPARAO DO AMBIENTE DE DESENVOLVIMENTO.... 5 2.1 Linguagens de Programao.............................................................................................. 5 2.2 PHP: Histrico e Conceitos ............................................................................................... 7 2.3 Servidor WEB................................................................................................................... 8 2.4 IDE ................................................................................................................................. 12 2.5 Testando o Ambiente ....................................................................................................... 16 3 FUNDAMENTOS DA LINGUAGEM PHP ........................................................................... 20 3.1 Sintaxe Bsica................................................................................................................. 20 3.1.1 Delimitando o cdigo PHP ....................................................................................... 20 3.1.2 Separador de instrues ........................................................................................... 20 3.1.3 Nomes de variveis .................................................................................................. 21 3.1.4 Comentrios............................................................................................................. 21 3.2 Criando os primeiros scripts ............................................................................................ 21 3.2.1 Primeiro Exemplo .................................................................................................... 21 3.2.2 Utilizando formulrios HTML ................................................................................. 23 3.3 Tipos ............................................................................................................................... 24 3.3.1 Tipos Suportados ..................................................................................................... 24 3.3.2 Inteiros (integer ou long) .......................................................................................... 24 3.3.3 Nmeros em Ponto Flutuante (double ou float) ........................................................ 24 3.3.4 Strings ..................................................................................................................... 25 3.3.5 Arrays ...................................................................................................................... 25 3.3.6 Objetos .................................................................................................................... 27 3.3.7 Booleanos ................................................................................................................ 27 3.4 Transformao de tipos ................................................................................................... 27 3.4.1 Coeres .................................................................................................................. 27 3.4.2 Transformao explcita de tipos .............................................................................. 28 3.4.3 Com a funo settype ............................................................................................... 28 3.5 Constantes ...................................................................................................................... 28 3.5.1 Constantes pr-definidas .......................................................................................... 28 3.5.2 Definindo constantes ................................................................................................ 29 3.6 Operadores...................................................................................................................... 29 3.6.1 Aritmticos .............................................................................................................. 29 3.6.2 de strings ................................................................................................................. 29 3.6.3 de atribuio ............................................................................................................ 29 3.6.4 bit a bit .................................................................................................................... 30 3.6.5 Lgicos .................................................................................................................... 30 3.6.6 Comparao ............................................................................................................. 30 3.6.7 Expresso condicional.............................................................................................. 30 3.6.8 de incremento e decremento ..................................................................................... 31 3.6.9 Ordem de precedncia dos operadores...................................................................... 31 3.7 Estruturas de Controle ..................................................................................................... 32 3.7.1 Blocos...................................................................................................................... 32 3.7.2 Comandos de seleo ............................................................................................... 32 3.7.3 comandos de repetio ............................................................................................. 35 3.7.4 Quebra de fluxo ....................................................................................................... 37 3.8 Funes .......................................................................................................................... 38

3.8.1 Definindo funes .................................................................................................... 38 3.8.2 Valor de retorno ....................................................................................................... 38 3.8.3 Argumentos ............................................................................................................. 39 3.8.4 Contexto .................................................................................................................. 40 3.8.5 Escopo ..................................................................................................................... 41 3.9 Variveis ......................................................................................................................... 42 3.9.1 O modificador static ................................................................................................. 42 3.9.2 Variveis Variveis ................................................................................................... 42 3.9.3 Variveis enviadas pelo navegador ........................................................................... 43 3.9.4 Variveis de ambiente .............................................................................................. 43 3.9.5 Verificando o tipo de uma varivel ........................................................................... 44 3.9.6 Destruindo uma varivel .......................................................................................... 44 3.9.7 Verificando se uma varivel possui um valor ............................................................ 44 4 FUNDAMENTOS AVANADOS DA LINGUAGEM PHP ................................................... 46 4.1 Classes e Objetos ............................................................................................................ 46 4.1.1 Classe ...................................................................................................................... 46 4.1.2 Objeto ...................................................................................................................... 46 4.1.3 A varivel $this ........................................................................................................ 46 4.1.4 SubClasses ............................................................................................................... 47 4.1.5 Construtores............................................................................................................. 47 5 REFERNCIAS .................................................................................................................... 49

1 INTRODUO
Ol aluno, O programador web um dos profissionais que necessitam de muita criatividade, rapidez para construir sites de qualidade, ou seja, sites que proporcionem fcil navegao e consiga solucionar as necessidades impostas pelo mercado. Para a comunicao entre as pessoas so utilizados vrios meios, como sinais, a fala e a escrita, porm todas fazem uso de um idioma em comum. Com o computador no diferente, faz-se necessrio utilizao de artifcios ou mesmo um idioma, esse conhecido como uma linguagem de programao. Esse o meio pelo qual, os humanos constroem a ideia que desejam criar e fazem o uso do computador para que ele a interprete. A linguagem de programao que ser apresentada a PHP que muito usada no meio comercial para a construo de sites e sistemas on-line para empresas. Esta disciplina essencial, e ser necessrio muito empenho e dedicao para conseguir absorver os contedos e aplic-los. Todas as etapas devem ser seguidas em sequncia para um melhor resultado, como na preparao de um bolo. Se ainda houver dvidas nas outras disciplinas releiam os contedos, e faam uso da internet que uma grande fonte de conhecimento. Para iniciar o nosso aprendizado devemos preparar o nosso ambiente de programao, bem como um pouco da histria da linguagem de programao PHP e sua aplicao. Sero mostrados os fundamentos da linguagem e em conjunto a aplicao prtica dos conhecimentos vistos em sala da aula. Espero o emprenho de todos para que possam sair bons programadores para web, ao final deste curso.

Bons estudos.

Willamys Gomes Fonseca Arajo

2 INTRODUO AO PHP E PREPARAO DO AMBIENTE DE DESENVOLVIMENTO


Antes de tudo, ser feito uma breve apresentao da evoluo das linguagens de programao e os tipos que existem, como uma forma deixa-lo familiarizado com as tcnicas de desenvolvimento de sites e aplicaes. Aps isso, ser mostrado como preparar o ambiente de programao para a construo das aplicaes web e a nossa primeira ap licao, o famoso Ol mundo..

2.1 Linguagens de Programao


Linguagens de programao so usadas para descrever algoritmos; isto , sequncias de passos que levam soluo de um problema. Uma linguagem de programao precisa suportar a definio de aes e prover meios para especificar operaes bsicas de computao, alm de permitir que os usurios especifiquem como estes passos devem ser sequenciados para resolver um problema. Uma linguagem de programao pode ser considerada como sendo uma notao que pode ser usada para especificar algoritmos com preciso. Inicialmente podemos dividir as linguagens de programao em dois tipos: linguagens de baixo nvel e linguagens de alto nvel. As linguagens de baixo nvel so restritas as linguagens de mquina em que h uma forte relao entre as operaes implementadas pela linguagem e as operaes implementadas pelo hardware. Esse tipo de linguagem era bastante usada pelos primeiros programadores, em que lidavam quase que diretamente com o hardware, os cdigos eram baseados principalmente em sequncias de dgitos binrios (0s e 1s). Por exemplo, o processo de efetuar uma soma (2+1 = 3) era representado pelos seguintes comandos: 000010000001000011 A utilizao dessa forma de programao era sujeita a uma grande probabilidade de erro em todas as suas etapas. Outro problema que algoritmos simples resultavam em longos programas, o que dificultava o processo de validao e deteco de erros. Os clculos de endereos de memria tambm eram feitos manualmente. J as linguagens de alto nvel aproximam-se das linguagens utilizadas por humanos para expressar problemas e algoritmos. Cada declarao numa linguagem de alto nvel equivale a vrias declaraes numa linguagem de baixo nvel. Por exemplo, para efetuar a mesma operao de soma, temos. Soma(valor1,valor2); Com a utilizao de uma linguagem de alto nvel, problemas podem ser solucionados muito mais rapidamente e com muito mais facilidade. A soluo do problema no necessita ser obscurecida pelo nvel de detalhes necessrios em um programa em linguagem de baixo nvel, como

preocupao com endereamento de memria ou como o quanto de energia o processador precisar para executar a ao. O programa em linguagem de alto nvel normalmente fcil de seguir e entender cada passo da execuo. Embora seja teoricamente possvel a construo de computadores especiais, capazes de executar programas escritos em uma linguagem de programao qualquer, os computadores existentes hoje em dia so capazes de executar somente programas em uma linguagem de nvel baixo, a linguagem de mquina. Para que os programadores possam fazer uso das linguagens de alto nvel necessrio que haja uma espcie de tradutor que podem ter duas abordagens: os compiladores e os interpretadores. Um compilador, enquanto traduz um programa escrito em linguagem de alto nvel, produz um programa em linguagem objeto (linguagem executvel, ou seja, linguagem de mquina), que uma vez gerado pode ser executado uma ou mais vezes no futuro. Assim, uma vez compilado um programa, enquanto o cdigo fonte do programa no for alterado, ele poder ser executado sucessivas vezes, sem necessidade de nova compilao. Um interpretador traduz um programa escrito em linguagem fonte, instruo a instruo, enquanto ele vai sendo executado. Assim, cada vez que um programa interpretado tiver que ser reexecutado, todo o processo de interpretao dever ser refeito, independentemente de ter havido ou no modificaes no cdigo fonte do programa desde sua ltima execuo. Observe a Figura 1 abaixo:

Cdigo Fonte

Tradutor

Programa Objeto

Execuo Execuo de todo o programa

COMPILADOR Linguagem de Alto Nvel INTERPRETADOR

Linguagem de Mquina

Executa a instruo e volta

Figura 1 Compilador e Interpretador

Neste curso ser utilizada a linguagem de programao PHP, uma vez que a internet, pela forma que construda, privilegia as linguagens interpretativas. Observe a Figura 2. No passo 1, o usurio solicita uma pgina para um servidor web. O servidor percebe que a pgina solicitada uma aplicao em PHP e solicita sua interpretao no passo 2. Como resultado o interpretador pode criar uma pgina web com o resultado da computao e envia como resposta para o usurio no passo 3.

Figura 2 - Processo de solicitao de pagina web ao servidor web

Nesse caso, toda vez que um novo usurio quiser acesso a uma pgina web, o servidor web ir fazer o mesmo processo de interpretao da pgina web, e posteriormente, enviar a resposta quantas vezes for necessrio. A velocidade de traduo depende de vrios fatores, mas geralmente a interpretao mais lenta que a compilao. No decorrer da disciplina no se deve esquecer como esse processo de solicitao e interpretao da pgina web ocorre, pois a essncia da programao para web. A seguir ser mostrado com mais em detalhes a histria e os conceitos da linguagem de programao PHP.

2.2 PHP: Histrico e Conceitos


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 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. A linguagem PHP foi concebida durante o outono de 1994 por Rasmus Lerdorf. As primeiras verses no foram disponibilizadas, tendo sido utilizadas em sua homepage 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 bastante simples que interpretava algumas macros e alguns utilitrios que rodavam por trs das homepages: 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 do pacote 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, o PHP foi tornando-se claramente grande demais para uma nica pessoa lidar, mesmo algum to focado e enrgico como Rasmus. A equipe de desenvolvimento do pequeno ncleo, agora executa o projeto em cdigo aberto, Modelo conhecido como "junta benevolente", com contribuies de desenvolvedores e usurios em todo o mundo. Suraski Zeev e Andi Gutmans, os dois programadores israelenses que desenvolveram o PHP3 e Analisadores do PHP4, tambm tm generalizado e estendeu o seu trabalho sob a rubrica de Zend.com. Na sua mais recente encarnao, PHP5 se esfora para oferecer algo que muitos usurios tm clamado ao longo dos ltimos anos: programao orientada a objetos (POO). PHP h muito tempo acenou para o modelo de programao orientado a objetos com funes que permitem utilizar os objetos para retirar os resultados e informaes de uma forma que lhes familiar. Esses esforos ainda ficaram aqum do ideal para muitos programadores, no entanto, os esforos para forar o PHP a construir totalmente sistemas orientados a objetos, muitas vezes produziram resultados inesperados e fraco desempenho. PHP5 do modelo de objetos recm-reconstrudo traz o PHP para mais prximo das linhas com outras linguagens orientadas a objeto, tais como Java e C + +, oferecendo suporte para recursos como sobrecarga, interfaces, variveis e mtodos privados, e outras construes no padro POO. A demanda por funcionalidades Web diminuiu muito pouco, e as tecnologias emergentes e normas continuam a aparecer o tempo todo, mas o financiamento disponvel para hardware, licenas diminuiu drasticamente. O PHP proporciona uma tima curva de aprendizado, rpida implementao de novas funcionalidades, e baixo custo de implantao que atualmente no mundo web so argumentos difceis de bater. A verso do PHP5 pode ser obtida no site http://www.php.net, nesse mesmo site tambm so oferecidas mais informaes sobre a linguagem e outras coisas.

2.3 Servidor WEB


Para o desenvolvimento das aplicaes em PHP necessrio que o cdigo fonte esteja armazenado em um servidor web, que pode ser um programa de computador responsvel por aceitar pedidos HTTP de clientes, geralmente os navegadores, e servi-los com respostas HTTP, incluindo opcionalmente dados, que geralmente so pginas web, tais como documentos HTML com objetos embutidos (imagens, vdeos,etc.) ou um computador que executa um programa que prov a funcionalidade descrita anteriormente. O servidor web trabalha utilizando a ideia de cliente-servidor, o qual modelo computacional baseado em interaes do tipo solicitao/resposta. A entidade que solicita um servio chamada cliente e a que presta o servio o servidor. Normalmente, essas solicitaes so feitas utilizandose uma rede de computadores. As estaes que disponibilizam a outras estaes o acesso a seus recursos atravs da rede, devem possuir o mdulo servidor. As estaes que permitem que suas aplicaes utilizem recursos compartilhados com outras estaes devem possuir o mdulo cliente.

O Cliente um programa executado em uma mquina que solicita informaes a outro programa, normalmente atravs da rede. O cliente toma a iniciativa de comear a comunicao quando deseja algum servio. O Servidor um programa que fica em espera, aguardando solicitaes de clientes e que fornece os dados solicitados quando recebe uma solicitao de um cliente. O servidor est a espera de comunicao. Na figura 3, temos o funcionamento do servidor web php.

Figura 3 - Funcionamento servidor web.

Para a utilizao do PHP necessrio que o mesmo esteja instalado e configurando em um servidor web, neste sentido como forma de tornar o desenvolvimento mais dinmico e eficiente, ser utilizado uma ferramenta chamada Xampp. Este um servidor independente de plataforma, software livre, que consiste principalmente na base de dados MySQL, o servidor web Apache e os interpretadores para linguagens de script: PHP e Perl. O nome provem da abreviao de X (para qualquer dos diferentes sistemas operativos), Apache, MySQL, PHP, Perl. O programa est liberado sob a licena GNU e atua como um servidor web livre, fcil de usar e capaz de interpretar pginas dinmicas. Atualmente XAMPP est disponvel para Microsoft Windows, GNU/Linux, Solaris, e MacOS X. O link para o site est na legenda da Figura 4. Ele todo em portugus. Voc ir baixar o arquivo apontado na Figura 5, que a verso portable.

Figura 4 - Para Windows: www.apachefriends.org/pt_br/xampp-windows.html; Para Linux: www.apachefriends.org/pt_br/xampp-linux.html.

Figura 5 Baixar a verso marcada de 116 MB.

Baixe e descompacte o 7-zip ou o arquivo zip na pasta de sua escolha. Depois, abra a pasta do XAMPP no local em que descompactou o arquivo .zip e execute o arquivo "setup-xampp.bat". O que ele faz descobrir a onde esto os servidores. Isto s preciso porque voc pode levar esta pasta no pen drive para outros lugares, assim a localizao pode mudar muito. Sempre que voc mudar a pasta de lugar, vai ter que executar este arquivo para configura a localizao, mas se no mudar de lugar no precisa repetir o processo.

Figura 6 - Menu do setup_xampp.bat. Digite 1 e Enter para configura novamente a localizao dos servidores.

Finalmente, inicie os diferentes servios com os arquivos iniciar/parar ou use o painel de controle "xampp-control.exe". Ele um programa que gerencia os servidores. A Figura 7 mostra sua tela, ela

nos ajuda a ligar os outros programas. Para inciar pressione os botes Start para ligar o Apache e o MySQL. A figura j mostra os mesmos iniciados, dessa forma ir aparecer a mensagem Running e o boto muda para o nome de Stop.

Figura 7 - Painel de Controle do XAMPP. Pressione os dois botes Start

Uma vez iniciado vai aparecer a tela de permisso do Windows, permita o acesso. S necessrio fazer isto a primeira vez. Veja a Figura 8.

Figura 8 Permisso do Windows para executar o Xampp

Para desligar tudo voc primeiro deve clicar nos botes Stop e esperar para desligar os servidores,

depois pressionar o boto Quit ou Exit.

Agora que tudo esta instalado, configurado e funcionando vamos testar nosso ambiente de teste. Abra seu navegador preferido e digite o endereo http://localhost/xampp/ a pgina da Figura 9 deve abrir.

Figura 9 Pgina Inicial do Xampp

Se apareceu a imagem acima tudo est configurado corretamente.

2.4 IDE
IDE, do ingls Integrated Development Environment ou Ambiente Integrado de Desenvolvimento, um programa de computador que rene caractersticas e ferramentas de apoio ao desenvolvimento de software com o objetivo de agilizar este processo. Geralmente os IDEs facilitam a tcnica de RAD (de Rapid Application Development, ou "Desenvolvimento Rpido de Aplicativos"), que visa a maior produtividade dos desenvolvedores. Construir aplicaes web de forma rpida e fcil, utilizando a lder IDE de aplicao web da indstria. Nesta disciplina utilizaremos o Aptana Studio que aproveita a flexibilidade do Eclipse e concentra-o em um poderoso mecanismo de desenvolvimento web Antes de instalar o Aptana Studio precisaremos instalar a mquina virtual Java, porque o APTANA foi desenvolvido em Java. O Java tambm gratuito. Para Efetuar o Download do Java v at ao site da Oracle neste endereo: www.oracle.com/technetwork/java/javase/downloads/index.html. Ao acessar o site abrir a pagina como segue na Figura 10.

Figura 10 Download do JRE do Java

Selecione a opo para aceitar a licena e a voc vai conseguir baixar a verso de seu sistema operacional. A

Figura 11 Clique a onde est o circulo para aceitar a licena de uso.

Figura 11 aponta o local para aceitar a licena de uso. D um duplo clique no arquivo que voc baixou e ir iniciar o processo de instalao. Aceite os prximos dois passos clicando

em Next. Ir aparecer a tela da Figura 12. Depois de instalado, voc ser direcionado uma pgina onde pode, opcionalmente, criar uma conta na Oracle para registrar sua instalao. Mas voc no precisa fazer isto.

Figura 12 Instalao do Java.

Aps a instalao do Java, preciso iniciar o processo de download e instalao do Aptana. A legenda da Figura 13 possui o link para o download da ferramenta.

Figura 13 Para Windows: http://aptana.com/products/studio3/download

Ou se preferir clique no Boto azul e ser redirecionado para a pgina de download.

Figura 14 Pagina de Download do Aptana

Execute o arquivo que baixar. A instalao simples como outros programas do Windows, mas se voc se sentir confuso ainda pode olhar a dica logo a seguir. Depois de instalado inicie o Aptana. A primeira vez que ele executado abre muito lento, mas so configuraes que so feitas apenas uma vez. Depois de configurado ele inicia mais rpido. A Figura 15 mostra o Aptana aberto.

Figura 15 Interface do Aptana

Vai aparecer uma caixa de dilogo solicitando a pasta que ser o Workspace, o espao de trabalho onde sero guardados os arquivos de seus projetos. Escolha a pasta htdocs que est dentro da pasta do XAMPP. Assim, seus projetos j ficaram logo no local onde sero testados. Depois disto ir parecer outra caixa de dilogo de configurao do Git. Marque a nica opo que a caixa disponibiliza e pressione OK. Por fim o Windows ir lhe perguntar sobre a permisso de acesso, permita. Pronto, instalao concluda. Caso voc precise de mais detalhes explicativos sobre a instalao do Aptana Studio 3, assista este vdeo tutorial no YouTube. www.youtube.com/watch?v=0XMTl8Y9Yu0.

2.5 Testando o Ambiente


Depois que todo o ambiente para o desenvolvimento das aplicaes est montado necessrio que seja feito o teste no servidor web. Para isso acesse no menu do Aptana Studio , File-> New> Project..., como segue na Figura 16.

Figura 16 Iniciando um novo projeto.

Ir aparecer a janela da Figura 17. O Aptana pode fazer projetos em diversas tecnologias, no s em PHP, ento vamos escolher PHP Project e pressione Next.

Figura 17 New Project

Ir aparecer uma nova janela e voc deve colocar o nome do projeto. Coloque o nome do projeto Alomundo. Observe na Figura 18. No painel do App Explore aparece o nome do projeto. J no painel do Project Explorer voc poder ver todos os projetos de seu workspace. Observe tambm na Figura 18.

Figura 18 - Janela para nomear o projeto e ao lado esquerdo o painel App Explorer j com o projeto criado.

Se voc for pasta htdocs, local onde foi definido o workspace, estar l o projeto Alomundo

no formato de uma pasta. S que o projeto est vazio, ento ser feita a primeira aplicao web super simples em PHP, para testar se tudo est funcionando. No painel App Explorer clique em qualquer lugar em sua rea preta com o boto direito. Ir aparecer um menu contextual, selecione New FromTemplate > PHP > PHP Template, como na Figura 19. Ir aparecer uma janela perguntando o nome do arquivo. Escreva index.php e clique em Finish.

Figura 19 Menu para criao de arquivos baseados em templates

Figura 20 Definio do nome do arquivo que ser criado.

Observe que o painel App Explorer lista os arquivos presentes no projeto Alomundo, no caso exibe o nosso arquivo index.php. Ao lado exibido o contedo do arquivo index.php.

Figura 21 - Painel App Explorer exibe o arquivo index.php no projeto Alomundo Ao lado o arquivo index.php aberto e exibindo seu contedo.

Para finalizar edite o arquivo apague a linha onde est escrito phpinfo(); e escreva echo Oi mundo!;. Por enquanto ser explicado apenas que esta linha escreve o que est escrito entre aspas. Clique no cone indicado na Figura 22 para salvar o arquivo.

Figure 22 - cone que salva o arquivo editado

Para finalizar v para o navegador e digite o endereo do projeto: http://localhost/helloworld/index.php. Observe que uma pgina foi criada pelo PHP e seu

contedo o texto que colocado.

Figura 23 Exibio da pgina mostrando que o teste ocorreu corretamente.

3 FUNDAMENTOS DA LINGUAGEM PHP


3.1 Sintaxe Bsica
3.1.1 Delimitando o cdigo PHP
O cdigo PHP fica embutido no prprio HTML. O interpretador identifica quando um cdigo PHP pelas seguintes tags:

<?php comandos ?> <script language=php> comandos </script> <? comandos ?> <% 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.

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

3.1.3 Nomes de variveis


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

3.1.4 Comentrios
H dois tipos de comentrios em cdigo PHP:

3.1.4.1 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: <? echo teste; #isto um teste ?> <? echo teste; //este teste similar ao anterior ?>

3.1.4.2 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 pelo interpretador.
Exemplos: <? echo teste; /* Isto um comentrio com mais de uma linha, mas no funciona corretamente ?> */ <? echo teste; /* Isto um comentrio com mais de uma linha que funciona corretamente */ ?>

3.2 Criando os primeiros scripts


3.2.1 Primeiro Exemplo
Neste exemplo, criaremos um script com uma sada simples, que servir para testar se a instalao foi feita corretamente:
<html> <head><title>Aprendendo PHP</title></head> <body>

<?php echo "Ol Mundo."; ?> </body> </html>

Salve o arquivo como ola.php no diretorio de documentos do Apache (ou o Web Server escolhido). Abra uma janela do navegador e digite o endereo http://localhost/ola.php. Verificando o cdigo fonte da pgina exibida, temos o seguinte:
<html> <head><title>Aprendendo PHP</title></head> <body> Ola Mundo. </body> </html>

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:
<html> <head><title>Aprendendo PHP</title></head> <body> <?php $texto = "Ola Mundo."; echo $texto; ?> </body> </html>

Em ambos scripts o browser apresentar da seguinte maneira:

Figura 24 Apresentao no Browser do Ola Mundo.

3.2.2 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 o nome 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:
<html> <head><title>Aprendendo PHP</title></head> <body> <?php $texto = $_POST['texto']; if($texto != "") echo "Voce digitou \"$texto\"<br><br>"; ?> <form method="post" action="<? echo $PATH_INFO; ?>"> <input type="text" name="texto" value="" size=10> <br> <input type="submit" name="sub" value="Enviar!"> </form> </body> </html>

Ao salvar o arquivo acima e carreg-lo no browser, o usurio ver apenas um formulrio que contm um espao para digitar o texto, como visto na figura 01. Ao digitar um texto qualquer e submeter o formulrio, a resposta, que o mesmo arquivo PHP (indicado pela constante $PATH_INFO, que retorna o nome do arquivo) ser como na figura 02:

Figura 25 - Formulrio sem processar o php.

Figura 26 - Formulrio com o php processado com o texto "Teste"

Isso ocorre porque o cdigo PHP testa o contedo da varivel $texto. Inicialmente ele uma string vazia, e por isso nada impresso na primeira parte. Quando algum texto digitado no formulrio e

submetido, o PHP passa a trat-lo como uma varivel. Como no formulrio o campo possui o nome texto, a varivel com seu contedo ser $texto. Assim, no prximo teste o valor da varivel ser diferente de uma string vazia, e o PHP imprime um texto antes do formulrio.

3.3 Tipos
3.3.1 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 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).

3.3.2 Inteiros (integer ou long)


Uma varivel pode conter um valor inteiro com atribuies que sigam as seguintes sintaxes:
$vivas = 1234; # $vivas = -234; # $vivas = 0234; # # $vivas = 0x34; # # inteiro positivo na base decimal inteiro negativo na base decimal inteiro na base octal-simbolizado pelo 0 equivale a 156 decimal 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.

3.3.3 Nmeros em Ponto Flutuante (double ou float)


Uma varivel pode ter um valor em ponto flutuante com atribuies que sigam as seguintes sintaxes:
$vivas = 1.234; $vivas = 23e4; # equivale a 230.000

3.3.4 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 (com exceo de \\ e \' ver tabela abaixo) b) utilizando aspas duplas ( " ) Desta maneira, qualquer varivel ou caracter de escape ser expandido antes de ser atribudo. Exemplo:

<? $teste = "Mauricio"; $vivas = '---$teste--\n'; echo "$vivas"; ?>


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

<? $teste = "Mauricio"; $vivas = "---$teste---\n"; echo "$vivas"; ?>


A sada desse script ser "---Mauricio--" (com uma quebra de linha no final). A tabela seguinte lista os caracteres de escape: Sintaxe 3.3.4.1.1 Significado

\n \r \t \\ \$ \ \

Nova linha Retorno de carro (semelhante a \n) 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.

3.3.5 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: <?

$cor[1] = vermelho; $cor[2] = verde; $cor[3] = azul; $cor[teste] = 1; ?> Equivalentemente, pode-se escrever: <? $cor = array(1 => vermelho, 2 => verde, 3 => azul, teste => 1); ?>

3.3.5.1 Listas
As 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 s variveis 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 $b $c $d

== == == ==

null um dois 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, 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.

3.3.6 Objetos
Um 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.

3.3.7 Booleanos
PHP 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.

3.4 Transformao de tipos


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

3.4.1 Coeres
Quando 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, seu valor 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.
Exemplo: $vivas = $vivas = $vivas = $vivas =

1; // $vivas a string 1 $vivas + 1; // $vivas o integer 2 $vivas + 3.7;// $vivas o double 5.7 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 $vivas = 1 $vivas = 1 $vivas = 1 $vivas = 1 $vivas = 1

+ + + + + +

10.5; // -1.3e3; // teste10.5; // 10testes; // " 10testes"; "+ 10testes";

$vivas == 11.5 $vivas == -1299 $vivas == 1 $vivas == 11 // $vivas == 11 // $vivas == 1

3.4.2 Transformao explcita de tipos


A sintaxe do typecast de PHP semelhante ao C: basta escrever o tipo entre parenteses antes do valor
Exemplo: $vivas = $vivas = $vivas = $vivas = 15; (double) $vivas 3.9 (int) $vivas // // // // // $vivas integer (15) $vivas double (15.0) $vivas double (3.9) $vivas integer (3) o valor decimal truncado

Os tipos de cast permitidos so: (int), (integer) (real), (double), (float) (string) (array) (object) muda para integer; muda para float; muda para string; muda para array; muda para objeto.

3.4.3 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; settype($vivas,double)

// $vivas integer // $vivas double

3.5 Constantes
3.5.1 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 como configuraes da mquina, sistema operacional, servidor

http e verso do PHP instalada.

3.5.2 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 um objeto. 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;

3.6 Operadores
3.6.1 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

3.6.2 de strings
S h um operador exclusivo para strings: . concatenao

3.6.3 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

Exemplo:

$a = 7; $a += 2; // $a passa a conter o valor 9

3.6.4 bit a bit


Comparam dois nmeros bit a bit.
& | ^ ~ << >> e lgico ou lgico ou exclusivo no (inverso) shift left shift right

3.6.5 Lgicos
Utilizados para inteiros representando valores booleanos
and or xor ! && || e lgico ou lgico ou exclusivo no (inverso) e lgico ou lgico

Existem dois operadores para e e para ou porque eles tm diferentes po sies na ordem de precedncia.

3.6.6 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 maior que menor ou igual a maior ou igual a

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

3.6.8 de incremento e decremento


++ -incremento decremento

Podem ser utilizados de duas formas: antes ou depois da varivel. Quando utilizado antes, retorna o valor da varivel antes de increment-la ou decrement-la. Quando utilizado depois, retorna o valor da varivel j incrementado ou 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

3.6.9 Ordem de precedncia dos operadores


A tabela a seguir mostra a ordem de precedncia dos operadores no momento de avaliar as expresses;
Precedncia 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Associatividade esquerda esquerda esquerda esquerda direita esquerda esquerda esquerda esquerda esquerda esquerda esquerda no associa no associa esquerda esquerda , or xor and print = += -= *= /= .= %= &= != ~= <<= >>= ?: || && | ^ & == != < <= > >= << >> +-. Operadores

Precedncia 17. 18. 19. 20.

Associatividade esquerda direita direita no associa */%

Operadores

! ~ ++ -- (int) (double) (string) (array) (object) @ [ new

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

3.7.1 Blocos
Um 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 comandos citados 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; }

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

3.7.2.1 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; . . . 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;

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;

3.7.2.2 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 exemplo seguinte 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 elseif ($i == print i elseif ($i == print i

igual a zero; 1) igual a um; 2) igual a dois;

switch ($i) { case 0: print i igual a zero;

break; 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 comando switch 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; }

3.7.3 comandos de repetio

3.7.3.1 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 duas sintaxes alternativas:


while (<expressao>) <comando>; while (<expressao>): <comando>; . . . <comando>; 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 <=10) print $i++;

3.7.3.2 do... while


O lao do..while funciona de maneira bastante semelhante ao while, com a simples diferena que a expresso testada ao final do bloco de comandos. O lao do..while possui apenas uma sintaxe, que a seguinte:
do { <comando> . . . <comando> } while (<expressao>);
O exemplo utilizado para ilustrar o uso do while pode ser feito da seguinte maneira utilizando o do.. while:

$i = 0; do { print ++$i; } while ($i < 10);

3.7.3.3 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 (<inicializacao>;<condicao>;<incremento>) <comando>; for (<inicializacao>;<condicao>;<incremento>) : <comando>; . . . <comando>; 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:
<inicializacao> while (<condicao>) { comandos ... <incremento> }

3.7.4 Quebra de fluxo

3.7.4.1 Break
O 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) { echo erro! x = 20; break; ... }

No trecho de cdigo acima, o lao while tem uma condio para seu trmino normal ($x <= 0), mas foi utilizado o break para o caso de um trmino no previsto no incio do lao. Assim o interpretador seguir para o comando seguinte ao lao.

3.7.4.2 Continue
O comando continue tambm deve ser utilizado no interior de laos, e funciona de maneira semelhante ao break, com a diferena que o fluxo ao invs de sair do lao volta para o incio dele. Vejamos o exemplo:

for ($i = 0; $i < 100; $i++) { if ($i % 2) continue; echo $i ; }

O exemplo acima uma maneira ineficiente de imprimir os nmeros pares entre 0 e 99. O que o lao faz testar se o resto da diviso entre o nmero e 2 0. Se for diferente de zero (valor lgico true) o interpretador encontrar um continue, que faz com que os comandos seguintes do interior do lao sejam ignorados, seguindo para a prxima iterao.

3.8 Funes
3.8.1 Definindo funes
A sintaxe bsica para definir uma funo :
function nome_da_funo([arg1, arg2, arg3]) { Comandos; ... ; [return <valor de retorno>]; }

Qualquer cdigo PHP vlido pode estar contido no interior de uma funo. Como a checagem de tipos em PHP dinmica, o tipo de retorno no deve ser declarado, sendo necessrio que o programador esteja atento para que a funo retorne o tipo desejado. recomendvel que esteja tudo bem documentado para facilitar a leitura e compreenso do cdigo. 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.

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

3.8.3 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: function imprime($texto){ echo $texto; } imprime(teste de funes);

3.8.3.1 Passagem de parmetros por referncia


Normalmente, a passagem de parmetros em PHP feita por valor, ou seja, se o contedo da varivel for alterado, 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 a execuo 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 o escopo atual, ou seja, os contedos das variveis. Se uma dessas variveis for passada como parmetro, seu contedo fica preservado, 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 da funo. 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, alterados. */ &$b); /* Aqui as duas variveis tero seus valores

3.8.3.2 Argumentos com valores pr-definidos (default)


Em PHP possvel ter valores default para argumentos de funes, ou seja, valores que sero assumidos em caso de nada ser passado no lugar do argumento. Quando algum parmetro declarado desta maneira, a passagem do mesmo na chamada da funo torna-se opcional.
function teste($vivas = testando) { echo $vivas; } teste(); // imprime testando teste(outro teste); // imprime outro teste

bom lembrar que quando a funo tem mais de um parmetro, o que tem valor default deve ser declarado 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 o texto: a figura um crculo de cor azul */

3.8.4 Contexto
O 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 bloco sero eliminadas ao trmino da execuo da funo.

3.8.5 Escopo
O 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.
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 ser referida num escopo local, mesmo que no haja outra com nome igual que cubra a sua visibilidade. Para que o script funcione 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 abaixo produzem o mesmo resultado:
Exemplo: $vivas = "Testando"; function Teste() { echo $GLOBALS["vivas"]; // imprime $vivas echo $vivas; // no imprime nada } Teste();

3.9 Variveis
3.9.1 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 $a perde seu valor. J no exemplo seguinte, a cada chamada da funo a varivel $a ter seu valor impresso e ser incrementada:
function Teste() { static $a = 0; echo $a; $a++; }

O modificador static muito utilizado em funes recursivas, j que o valor de algumas variveis precisa ser 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 funo Teste() a impresso ocorre antes da recuperao do valor de $a, e portanto nesse momento seu valor ainda nulo. Para que a funo retorne algum valor o modificador static deve ser utilizado.

3.9.2 Variveis Variveis


O PHP tem um recurso conhecido como variveis variveis, que consiste em variveis cujos nomes

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

3.9.3 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 url http://localhost/teste.php3?vivas=teste, automaticamente o PHP criar uma varivel com o nome $vivas contendo a string teste. Note que o contedo da varivel est no formato urlencode. Os formulrios html j enviam informaes automaticamente nesse formato, e o PHP decodifica sem necessitar de tratamento pelo programador.

3.9.3.1 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);

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.

3.9.4 Variveis de ambiente


O PHP possui diversas variveis de ambiente, como a $PHP_SELF, por exemplo, que contm o nome e o 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().

3.9.5 Verificando o tipo de uma varivel


Por causa da tipagem dinmica utilizada pelo PHP, nem sempre possvel saber qual o tipo de uma varivel em determinado instantes e no contar com a ajuda de algumas funes que ajudam a verificar isso. A verificao pode ser feita de duas maneiras:

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

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

3.9.6 Destruindo uma varivel


possvel desalocar uma varivel se ela no for usada posteriormente atravs da funo unset, que tem a seguinte assinatura:
int unset(mixed var);

A funo destri a varivel, ou seja, libera a memria ocupada por ela, fazendo com que ela deixe de existir. 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.

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

3.9.7.1 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 false em caso contrrio.

3.9.7.2 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 uma string vazia. Caso contrrio, retorna false.

4 FUNDAMENTOS AVANADOS DA LINGUAGEM PHP


4.1 Classes e Objetos
4.1.1 Classe
Uma 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 funes disponveis. 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 === */ } }

4.1.2 Objeto
Como 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();

4.1.3 A varivel $this


Na 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, essa varivel significa o objeto que estamos utilizando. Como exemplo da utilizao de classes e objetos, podemos utilizar a classe conta, que define uma conta bancria 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; } }

$minhaconta = new conta; $minhaconta->saldo(); // a variavel interna no foi // inicializada, e no contm // valor algum $minhaconta->credito(50); $minhaconta->saldo(); // retorna 50

4.1.4 SubClasses
Uma 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 ser utilizada 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().

4.1.5 Construtores
Um 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 o exemplo:
class conta { var $saldo; function conta () { $this.saldo = 0; } function saldo() { return $this->saldo; } function credito($valor) { $this->saldo += $valor; } }

Podemos perceber que a classe conta agora possui um construtor, que inicializa a varivel $saldo com o 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 .

5 REFERNCIAS
CONVERSE, Tim; PARK, Joyce. PHP5 and Mysql Bible. Wiley Publishing, Inc. 2004. MENDONA, Ewerton. Linguagem de Programao para Web. Secretaria de Educao do Governo do Estado de Pernambuco. Rede e-Tec Brasil. 2013 OLIVEIRA, L. A. H. G. de. Algoritmo e Lgica de Programao Conceitos de Linguagens de Programao. Universidade Federal do Rio Grande do Norte. Centro de Tecnologia. Departamento de Computao e Automao. 2004

Anda mungkin juga menyukai