Professional Documents
Culture Documents
Edio n1 - 2007
ROSEMARY FRANCISCO
27/8/2007 13:22:09
Apresentao
Este livro-texto contm a disciplina de Programao para Internet, cujo contedo disponibilizar aos alunos conceitos fundamentais da programao de aplicaes para Internet. Por meio deste material ser possvel conhecer uma das linguagens mais populares atualmente tanto em ambientes estudantis quanto em ambientes comerciais. Para sua melhor compreenso, o livro est estruturado em quatro partes. Na primeira parte, so apresentados os conceitos bsicos da programao para WEB, que proporcionar um primeiro contato com essa tecnologia. Ainda demonstraremos qual deve ser o ambiente de desenvolvimento e como configur-lo. A segunda parte engloba as principais caractersticas da linguagem PHP e o desenvolvimento de vrios exemplos para melhor compreenso do funcionamento de cada uma das caractersticas citadas. A terceira parte tratar de aspectos um pouco mais avanados da linguagem PHP, conceitos como desenvolvimento Orientado a Objetos sero tratados nesta parte. Por fim, na quarta e ltima parte do livro, demonstraremos como a linguagem PHP interage com o banco de dados MySQL, tambm desenvolveremos um estudo de caso que permitir a consolidao dos conhecimentos adquiridos nesta disciplina. Lembre-se de que a sua passagem por esta disciplina ser tambm acompanhada pelo Sistema de Ensino EaD Tupy, seja por correio postal, fax, telefone, e-mail ou Ambiente Virtual de Aprendizagem. Sempre entre em contato conosco quando surgir alguma dvida ou dificuldade. Entre sempre em contato conosco, quando surgir alguma dvida ou dificuldade. Toda a equipe ter a maior alegria em atend-lo (a), pois o seu desenvolvimento intelectual e profissional, nessa jornada, so o nosso maior objetivo. Acredite no seu sucesso e bons momentos de estudo! Equipe EaD Tupy
SUMRIO
CARTA DO PROFESSOR ............................................................................................. 4 CRONOGRAMA DE ESTUDOS .................................................................................... 5 PLANO DE ESTUDOS ................................................................................................... 6 AULA 1 VISO GERAL SOBRE A LINGUAGEM PHP............................................. 7 AULA 2 INTRODUO LINGUAGEM PHP..........................................................20 AULA 3 TIPOS DE DADOS SUPORTADOS PELA LINGUAGEM PHP.................. 33 AULA 4 TRABALHANDO COM VARIVEIS E CONSTANTES.............................. 49 AULA 5 OPERADORES DA LINGUAGEM PHP...................................................... 61 AULA 6 ESTRUTURAS DE CONTROLE. .............................................................. 73 AULA 7 CLASSES E OBJETOS............................................................................. 94 AULA 8 CONTROLE DE SESSO....................................................................... 106 AULA 9 TRABALHANDO COM BANCO DE DADOS MYSQL......................... 113 AULA 10 ESTUDO DE CASO: REVENDA DE AUTOMVEIS...............................120 REFERNCIAS ........................................................................................................ 175
Carta da Professora
O conhecimento como um jardim: se no for cultivado, no pode ser colhido. (Provrbio Africano)
Caro(a) aluno(a), Nos prximos captulos, ter incio a caminhada rumo ao conhecimento da programao para Internet utilizando a linguagem de programao PHP. Linguagem que foi concebida apenas para uso particular, hoje em dia expande-se tanto no meio acadmico quanto em aplicaes comerciais que esto espalhadas pelo mundo. Com o avano dos meios de comunicao e a rpida expanso dos servios disponveis pela Internet, tornou-se imprescindvel aos prossionais de informtica, principalmente aos desenvolvedores de aplicaes, o conhecimento de uma linguagem que permita construir e disponibilizar diversas aplicaes para a Internet. A Internet tem mudado muitos conceitos e o seu foco principal, hoje em dia, disponibilizar servios de maneira rpida a qualquer momento e para qualquer usurio. Assim, nosso objetivo maior, depois de percorrida esta caminhada, estarmos inseridos no contexto do desenvolvimento das aplicaes para a Internet. Durante esta caminhada, conheceremos a origem da linguagem PHP, seus principais conceitos, sua sintaxe bsica e, ao nal, desenvolvendo um estudo de caso com o intuito de praticarmos melhor o conhecimento adquirido. Sendo assim, convido voc para, juntos, agora virtualmente, vencer este novo desao"
Cronograma de Estudos
Acompanhe, no cronograma abaixo, os contedos das aulas e atualize as possveis datas de realizao de aprendizagem e avaliaes.
Semana
Carga horria 4 8 8 6
Aula Viso Geral sobre a Linguagem PHP Introduo a Linguagem PHP Tipos de dados suportados pela Linguagem PHP Trabalhando com variveis e constantes Operadores da Linguagem PHP Estruturas de Controle Classes e Objetos em PHP Controle de Sesso Trabalhando com Banco de Dados MySQL Estudo de Caso: Revenda de Automveis
Data/ Avaliao _/_ a _/_ _/_ a _/_ _/_ a _/_ _/_ a _/_ _/_ a _/_ _/_ a _/_ _/_ a _/_ _/_ a _/_ _/_ a _/_ _/_ a _/_
6 8
12 8
6 14
Plano de Estudos
Bases Tecnolgicas Banco de dados para Internet; WEB sites dinmicos; aplicaes avanadas para Internet; Performance de WEB sites.
Competncias Planejar o desenvolvimento de web sites com acesso a banco de dados; Planejar a construo de web sites dinmicos baseados em novas tecnologias; Compreender os mtodos e tcnicas de desenvolvimento de aplicaes avanadas para Internet; Identificar solues na otimizao e melhoria da performance de web sites.
Habilidades Projetar e desenvolver web sites com acesso a banco de dados; Construir web sites dinmicos; Desenvolver aplicaes avanadas para Internet; Implementar melhorias na performance de web sites.
Aula 1
Objetivos da Aula
Ao nal desta aula voc dever ser capaz de: Identicar o que uma arquitetura cliente-servidor; Analisar as vantagens da utilizao da linguagem PHP para programao para Internet; Identicar qual o ambiente que deve ser utilizado para programar com PHP.
Contedos da Aula
Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Introduo s Linguagens de programao para Internet; O que PHP?; Como surgiu a linguagem PHP?; Vantagens da linguagem PHP; Como trabalhar com PHP; Exerccios propostos.
Como j sabemos, a Internet uma rede que surgiu com o intuito principal de compartilhar informaes entre os usurios interligados por meio dela. No incio, as informaes que eram compartilhadas tinham um foco de estudo e pesquisa e os usurios que tinham acesso a essa rede eram poucos. Com o avano das tecnologias e a expanso da rede para outros usurios, o acesso s informaes e aos servios disponveis pela Internet aumentou consideravelmente. De acordo com as pesquisas realizadas em Junho/2007, pelo Internet World Stats, estima-se que a Internet usada por 18% da populao mundial (em torno de 1,1 bilho de pessoas). Este acesso vem aumentando gradativamente, em Maro/2007 essa mesma pesquisa foi realizada e as estatsticas apontaram que 16,9% da populao tinham acesso Internet. Isso signica que apenas em um ms tivemos um aumento de 1,1% de acessos, um aumento realmente considervel analisando as devidas propores (bilhes de pessoas). No so somente os acessos rede que vm aumentando, os tipos de servios disponibilizados tambm esto em larga expanso. Os servios pioneiros como WWW World Wide WEB que permitiam apenas a publicao de pginas institucionais, com informaes estticas, esto sendo substitudas por pginas com contedo cada vez mais dinmico, possibilitando aos prprios usurios da rede a interao e publicao dos contedos dessas pginas. Para permitir que os usurios da rede interajam dessa forma, necessrio que as aplicaes disponveis na Internet sejam desenvolvidas com uma linguagem que permita esses tipos de recursos. Nesse cenrio, surgiram as vrias linguagens de programao para a Internet, que permitem aos desenvolvedores criar aplicaes e servios com os mais variados recursos para disponibilizar na Internet. As aplicaes desenvolvidas para a Internet, utilizam a arquitetura cliente-servidor. O que uma arquitetura cliente-servidor? A gura 1 demonstra o funcionamento da arquitetura cliente-servidor.
Analisando a representao da gura 1, vemos um computador representando a mquina cliente, que pode ser entendida como o computador dos usurios acessando a Internet. A mquina cliente faz uma requisio de servio por meio do protocolo http protocolo que nos permite visualizar os servios disponveis na Internet - para um servidor. Devemos lembrar que a conexo entre a mquina cliente e o servidor pode ser feita por meio da Internet (quando se trata de um servio disponvel na Internet), ou ento por meio de uma rede interna (no caso das empresas que disponibilizam aplicaes cliente-servidor dentro da sua estrutura organizacional). O servidor, por sua vez, ao receber a requisio, independente se um servio interno ou externo, estar analisando a requisio feita e disponibilizando o servio. Na gura 1, o servio requisitado foi desenvolvido utilizando a linguagem PHP, portanto, o servidor ir localizar a rotina PHP, interpretar o cdigo PHP da rotina utilizando o interpretador do PHP instalado no servidor e retornar ao cliente o resultado da rotina em formato de pgina HTML. Veremos mais adiante, neste mesmo captulo, como deve ser o ambiente para trabalharmos com PHP. Porm por meio da gura 1, j podemos vericar que ser necessrio um interpretador da linguagem PHP para retornar ao usurio da aplicao o resultado nal esperado. O surgimento das linguagens de programao para Internet foi justamente
10
durante a fase de repercusso das redes de computadores e da arquitetura clienteservidor. As empresas fornecedoras de linguagens de programao e tambm os especialistas em servios para Internet identicaram a demanda e assim comearam a nascer as linguagens voltadas para o desenvolvimento de aplicaes cada vez mais dinmicas para a Internet.
PHP pode ser traduzido para: PHP Hipertext Preprocessor e uma linguagem de programao voltada para o desenvolvimento de aplicaes para a Internet. Por ser uma linguagem interpretada, caracterstica comum entre as linguagens para a Internet, necessria a instalao de um interpretador no servidor da aplicao que ir interpretar as instrues da linguagem e retornar o resultado no formato de uma pgina HTML para o navegador do usurio. A linguagem PHP uma linguagem Open Source, ou seja, pode ser utilizada por qualquer usurio sem a necessidade de compra de licena para a utilizao e desenvolvimento de aplicaes. Tambm pode ser considerada como uma linguagem multiplataforma, pois o interpretador da linguagem tem compatibilidade com mais de um sistema operacional. Essas caractersticas so as principais motivaes que fazem com que a linguagem seja cada vez mais popular entre os desenvolvedores de aplicaes para a Internet.
A linguagem PHP foi criada em 1994 por Ramus Lerdorf. Nessa poca, a idia de Ramus era apenas facilitar a publicao de informaes no seu site pessoal. Em 1995, o interpretador foi publicado e divulgado em uma comunidade Open Source e comeou a ser utilizada por outros usurios.
11
Fique sabendo Uma comunidade Open Source uma comunidade de desenvolvedores que desenvolvem e disponibilizam aplicaes e outros recursos que auxiliam no processo de desenvolvimento. Todos os recursos e aplicaes disponibilizados por esse tipo de comunidade so livres de licena de uso.
Entre os anos de 1996 e 1997, a linguagem j estava bem popularizada entre as diversas comunidades livres e seus usurios e, nessa poca, a origem do interpretador e suas atualizaes caram sob a responsabilidade da comunidade livre da linguagem PHP, que at hoje responsvel pelas correes e atualizaes da linguagem. Hoje em dia, a linguagem reconhecida mundialmente e muitas aplicaes j foram desenvolvidas com ela. a linguagem favorita dos acadmicos e desenvolvedores que utilizam a plataforma Linux. A verso mais recente e estvel da linguagem a verso 5, porm espera-se para o prximo ano, em 2008, o lanamento da verso 6, que j possui algumas distribuies na fase beta fase de testes.
As principais vantagens da linguagem so: livre de licena utilizao gratuita; multiplataforma, podendo ser utilizada na maioria dos sistemas operacionais sistemas operacionais mais populares; A grande maioria dos provedores externos empresas que vendem espao para armazenamento de sites e aplicaes na Internet possuem a instalao do interpretador do PHP em seus servidores; Possui muitos recursos distribudos em bibliotecas de fontes nas comunidades livres recursos que auxiliam no desenvolvimento das aplicaes; A comunidade livre de PHP est sempre desenvolvendo e distribuindo novos recursos nas bibliotecas de fontes para os desenvolvedores;
12
A linguagem tem suporte e integrao com os bancos de dados mais populares como MySQL, SQL Server, Oracle, DB2, entre outros; Permite o desenvolvimento de aplicaes dinmicas com recursos como: envio de e-mails, autenticao de usurios, contedo dinmico entre outros.
Alm das vantagens citadas acima, a linguagem tambm tem um diferencial importante em relao s demais: uma linguagem de fcil aprendizagem.
Os primeiros passos para iniciar o desenvolvimento de aplicaes com a linguagem PHP a preparao do ambiente de desenvolvimento. Para isso, certiquese de que voc tem os requisitos mnimos e o ambiente do PHP instalado em seu computador. O ambiente de desenvolvimento do PHP composto de um servidor WEB, responsvel pelo armazenamento e publicao das pginas, e o interpretador da linguagem PHP. O servidor WEB mais utilizado pelos desenvolvedores PHP o Apache, que um servidor gratuito, mas o PHP tambm pode ser congurado em outros servidores WEB como o famoso IIS da Microsoft. Alm disso, o ambiente de desenvolvimento pode tambm ser composto de um gerenciador de banco de dados para o armazenamento dos dados da aplicao dinmica. O banco de dados MySQL o favorito para o desenvolvimento de aplicaes para Internet com PHP. Para facilitar a congurao do ambiente de desenvolvimento, existe atualmente uma ferramenta chamada Vertrigo que permite a instalao e congurao de todo o ambiente de desenvolvimento PHP. Essa ferramenta instala inclusive o banco de dados MySQL e permite que aplicaes desenvolvidas com PHP sejam integradas com o MySQL. Para instalar o Vertrigo, voc pode fazer o download atravs do site http://vertrigo.sourceforge.net/?lang=br e seguir as instrues de instalao e congurao disponveis no site. A instalao do Vertrigo bem simples, possui a caracterstica: Next, Next, Finish ou, em portugus: Prximo Passo, Prximo Passo, Concluir.
13
As informaes do instalador tambm so bem simples e intuitivas, basta selecionar o idioma Portugus para instalao e seguir as instrues seguintes. Aps a instalao do Vertrigo voc j possuir o ambiente de desenvolvimento congurado para desenvolver suas aplicaes PHP. Para iniciarmos o desenvolvimento de aplicaes em PHP, inicialize o servidor do Vertrigo por meio do menu Iniciar >> Programas >> VertrigoServ. Ser aberta a janela do Vertrigo com as informaes das ferramentas que foram instaladas e conguradas em seu computador. Para inicializar o servidor, basta clicar no boto: Hide this window and start server que signica: Esconda essa janela e inicie o servidor. A gura 2 ilustra a janela do VertrigoServ.
Aps iniciar o VertrigoServ, ser mostrado um cone do servidor na barra de status do Windows, ao lado do relgio. Esse cone estar sempre visvel enquanto o servio do Vertrigo estiver ativo. Finalmente, para validarmos que est tudo certo com o Apache servidor WEB instalado para armazenar e publicar as pginas em PHP abra um navegador e digite o seguinte comando na barra de endereos: http://localhost Aps digitar o comando, ser mostrada a tela do VertrigoServ. A gura 3 mostra a tela do VertrigoServ.
14
Aps digitar o comando, ser mostrada a tela do VertrigoServ. A gura 3 mostra a tela do VertrigoServ. Para visualizar a verso do interpretador do PHP instalado por meio do Vertrigo, clique no link: View phpinfo screen, disponvel no item: Tools and Links. Aps clicar no link citado, ser mostrada uma tela com as informaes do interpretador do PHP: verso e bibliotecas instaladas. A gura 4 ilustra a tela com as informaes do PHP.
15
Aps validar a congurao e o funcionamento do ambiente de desenvolvimento, precisamos escolher um editor de comandos para podermos dar incio ao conhecimento e aprendizagem da linguagem PHP. Atualmente, no mercado, h muitos editores que permitem aos desenvolvedores de PHP uma boa produtividade, porm muitos desses editores no possuem uma verso gratuita para uso. importante ressaltar aqui, que voc pode trabalhar com a linguagem PHP utilizando at um bloco de notas, contudo, como j informamos anteriormente, um editor PHP ir agilizar e melhorar a produtividade durante o desenvolvimento. No decorrer do nosso curso, utilizaremos o editor: PHP Editor, desenvolvido em portugus e uma ferramenta gratuita. Para obter a verso do PHP Editor, entre no site: http://paginas.terra.com.br/informatica/php_editor/download.html e clique no link: Mirror 2 para fazer o download do arquivo. Aps o download do arquivo, clique duas vezes em cima do arquivo executvel para fazer a instalao que bem simples, basta seguir as instrues da instalao. As guras 5 a 8 ilustram o processo de instalao do PHP Editor.
Aps clicar no arquivo de instalao do PHP Editor, ser exibida a primeira tela com instrues para a instalao. Para prosseguir com a instalao, clique no boto avanar.
16
Em seguida, o instalador ir solicitar a conrmao do local para instalao do PHP Editor, geralmente o diretrio: C:\Arquivos de Programas\PHP Editor. Selecione o diretrio onde dever ser feita a instalao por meio do boto: Procurar, ou deixe o caminho sugerido pelo instalador e clique no boto: Instalar para prosseguir a instalao.
Aguarde at o processo de instalao nalizar (gura 7). Quando o processo de instalao nalizar, ser mostrada a tela com as informaes da instalao. Para prosseguir, clique no boto: Terminar. Caso a opo: Executar o PHP Editor esteja selecionada esta opo vem selecionada por padro - o PHP Editor ser aberto.
17
Figura 7 Tela 3 da Instalao do PHP Editor Ao clicar no boto: Terminar, o PHP Editor ir questionar se voc deseja relacionar todos os arquivos com extenso: .php com a ferramenta. Ao conrmar esta opo, todos os arquivos criados com a extenso: .php sempre sero abertos com o PHP Editor. Esse o ltimo passo para a instalao da ferramenta. Concludo esse passo, j ser possvel trabalhar com a ferramenta. A gura 8 ilustra a ferramenta PHP Editor que utilizaremos durante o curso.
18
Sntese
Nesta aula vimos: Uma introduo s linguagens para desenvolvimento de aplicaes para Internet; A denio de PHP; Como surgiu a linguagem PHP; Quais as vantagens da linguagem PHP em relao s demais linguagens; Quais so os pr-requisitos para trabalhar com PHP.
Exerccios propostos
1) Complete a frase abaixo com uma das alternativas, a ordem das palavras deve corresponder lgica da frase. A linguagem PHP possui um .... responsvel pela transformao das pginas .... em pginas .... . Essas pginas .... so as pginas que o .... ir disponibilizar ao .... a. Servidor Web, HTML, PHP, PHP, Usurio, Interpretador b. Servidor Web, PHP, HTML, PHP, Interpretador, Usurio c. Interpretador, PHP, HTML, HTML, Servidor WEB, Usurio d. Interpretador, HTML, PHP, PHP, Servidor WEB, Usurio
2) Selecione a alternativa incorreta. O PHP pode ser denido como: a. Uma linguagem de programao para Internet b. Uma linguagem Open Source c. Uma linguagem interpretada
19
3) Selecione a alternativa correta. O PHP atualmente mantido: a. Pelo criador da linguagem b. Por uma comunidade de softwares que necessita licena c. Por uma comunidade de softwares livres d. Por uma empresa privada
4) Qual das alternativas abaixo no uma vantagem na utilizao do PHP? a. O PHP multiplataforma b. O PHP Open Source c. O PHP possui integrao com diversos banco de dados d. O PHP possibilita o desenvolvimento de aplicaes estticas
5) Para desenvolver aplicaes com PHP, necessrio ter um ambiente de desenvolvimento. Quais dos itens abaixo so obrigatrios nesse ambiente de desenvolvimento ( permitida mltipla escolha): a. Servidor WEB b. Banco de Dados c. Interpretador PHP d. Editor PHP
20
Aula 2
Caro aluno(a)! Nesta segunda aula voc ir aprender a sintaxe bsica da linguagem PHP e tambm vai desenvolver o primeiro exemplo com a linguagem. Aps o desenvolvimento desse exemplo, ser mostrado como testar o exemplo no ambiente de desenvolvimento congurado. Bom estudo!
Objetivos da Aula
Ao nal desta aula, voc dever ser capaz de: Escrever uma instruo bsica em PHP; Testar o funcionamento de uma pgina PHP.
Contedos da Aula
Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Conhecendo a sintaxe bsica da linguagem; Desenvolvendo o primeiro exemplo com PHP; Exerccios propostos
21
Grande parte das aplicaes desenvolvidas em PHP possui a seguinte estrutura: Interface com o usurio aparncia da aplicao representada pela parte HTML com imagens e textos estticos e/ou dinmicos; Scripts com instrues em PHP representando a lgica de negcio da aplicao; Integrao com banco de dados representando os dados dinmicos que sero disponibilizados na aplicao. Essa estrutura tambm utilizada em aplicaes desenvolvidas com outras linguagens, pois esse um padro seguido por grande parte de desenvolvedores de aplicaes para a Internet. Portanto, importante lembrar que, alm de utilizarmos a linguagem PHP para desenvolvermos aplicaes dinmicas, tambm devemos conhecer os componentes bsicos da linguagem HTML e os conceitos bsicos de banco de dados.
Para fazer a interpretao de um cdigo PHP e disponibilizar no formato HTML, o interpretador procura um identicador que sinaliza o incio do cdigo PHP. Esse identicador chamado de delimitador. Por meio do delimitador, o interpretador saber onde o incio e o m do cdigo PHP. O delimitador PHP representado pelos smbolos: <?php ou somente <? = incio do bloco de comandos; ?> = m do bloco de comandos.
O exemplo abaixo demonstra como utilizar o delimitador PHP: <?php //instrues PHP; ?>
22
Esse o primeiro conceito que devemos utilizar quando estamos desenvolvendo com PHP. Sempre que incluirmos alguma instruo PHP, necessrio incluir a instruo dentro do bloco de delimitadores. Como vimos, podemos utilizar arquivos / pginas em PHP para montar a interface / leiaute da aplicao. Esse leiaute, muitas vezes, criado com o auxlio da linguagem HTML que permite a insero de estilos de fontes diferentes, imagens e outros componentes interativos. Por esse motivo, comum, quando desenvolvemos utilizando PHP, a interao entre instrues PHP e instrues HTML no mesmo arquivo. A funo da linguagem HTML ser formatar o leaiute da aplicao dinmica, de acordo com a disposio das instrues PHP e HTML. Vamos analisar o cdigo da pgina PHP abaixo:
Nome da pgina: exemplo1.php Contedo da pgina: <html> <body> <b><? print Ol Seja Bem Vindo ao PHP ?> </b> </body> </html>
Analisando o contedo da pgina, as instrues que esto em negrito so especcas da linguagem HTML e a instruo que no est em negrito uma instruo PHP. O interpretador ir identicar a existncia de uma instruo PHP por meio dos delimitadores: <? ?> e interpretar a instruo que foi denida. As instrues HTML foram includas na pgina apenas para facilitar a formatao do texto que ser mostrado, nesse caso, um texto em negrito, portanto, no ter nenhuma interferncia
23
Outro item importante que devemos utilizar no desenvolvimento com PHP o separador das instrues. Cada instruo denida em uma pgina em PHP deve ser nalizada com um ponto e vrgula ;. O interpretador do PHP l as instrues de uma pgina linha a linha. Quando ele identica o nal de uma instruo, interpreta a instruo e, caso tenha sucesso, ir disponibilizando o resultado parcialmente. Isso signica que a pgina HTML, resultante do processo de interpretao, ser montada aos poucos, conforme a nalizao da interpretao das instrues. Esse processo, muitas vezes, transparente aos olhos do usurio, sendo possvel sua identicao somente quando h lentido na montagem da pgina HTML. A lentido pode ser causada por uma srie de fatores como: problema na rede, problema no computador ou ainda problema na instruo PHP denida.
Diferente da maioria das linguagens de desenvolvimento, tanto para a Internet quanto para aplicaes diversas, a linguagem PHP possui uma caracterstica especca para declarao de nomes de variveis. Ao declarar um nome para uma varivel, necessrio incluir o smbolo: $ antes da varivel. Esse smbolo ir identicar que o nome a seguir uma varivel. O interpretador PHP somente reconhecer uma varivel se a mesma iniciar com o smbolo $. Outra caracterstica importante a ser ressaltada que o PHP case-sensitive, ou seja, ele faz distino entre maisculas e minsculas. Veja no exemplo abaixo a utilizao de variveis: <? $nome = Jos; print Ol . $nome; // vai mostrar Jos print <br>; print Ol . $NOME; // no vai mostrar nada ?>
24
1.4 Comentrios
Como j sabemos, os comentrios so muito importantes durante o desenvolvimento das aplicaes, por meio deles teremos como compreender o que faz uma determinada instruo ou bloco de instrues. Assim, quando for necessrio executar alguma manuteno na instruo, ser possvel faz-la de forma mais rpida. Em PHP h dois tipos de comentrios: Comentrios de linha = // Comentrios de bloco = /* o comentrio ca aqui */
Os comentrios de linha so utilizados quando precisamos fazer um comentrio rpido, que ocupe apenas uma linha. J os comentrios de bloco so utilizados quando o comentrio a ser feito possui mais de uma linha de texto. Veja o exemplo: <? //esse um comentrio de linha, ca apenas no cdigo print Essa frase est abaixo do comentrio de linha; //mais um comentrio de linha, a linha abaixo utilizada o comando <BR> do //HTML, para pular duas linhas entre as frases que sero mostradas na tela print <br><br>; /* Esse um comentrio de bloco. Pode ter mais de uma linha de comentrio, porm assim como o comentrio de linha, tambm somente ca no cdigo e nunca ser interpretado e mostrado na pgina nal em HTML para o usurio. */ print Essa frase ser mostrada duas linhas abaixo da primeira frase e abaixo do comentrio de bloco; ?>
25
Como j vimos nos exemplos anteriores, utilizamos o comando: print para imprimir o resultado das instrues na tela do navegador. Em PHP existem dois comandos que permitem imprimir textos e cdigos na tela: print echo
Ambos possuem a mesma funo: imprimir na tela, e no existe nenhum tipo de distino entre eles, portanto, em seus cdigos, voc poder utilizar o comando que lhe parece mais agradvel. No prximo tpico criaremos e testaremos o primeiro exemplo e car mais clara a funo do comando de impresso na tela.
Agora que j conhecemos a sintaxe bsica do PHP, vamos desenvolver nosso primeiro exemplo utilizando o PHP Editor para criar uma pgina em PHP e o ambiente de desenvolvimento do Vertrigo para testar o funcionamento da pgina criada. Primeiro devemos iniciar o servidor do Vertrigo. V at o menu Iniciar >> Programas >> VertrigoServ e selecione o item: VertrigoServ. Ao clicar nesse item, ser mostrada a tela de inicializao do servio do Vertrigo, veja a gura 2 ilustrada no captulo 1 desta apostila. Clique no boto: Hide this window and Start Server para iniciar o servio. Em seguida, abra o navegador da Internet e informe o comando abaixo na barra de endereos: http://localhost
Ser mostrada a pgina do VertrigoServ (gura 3 do captulo 1 desta apostila). Seguidos esses passos, j podemos iniciar o desenvolvimento do nosso exemplo. Para conseguirmos testar os nossos exemplos, ser necessrio disponibilizar os arquivos dentro do servidor WEB Apache, instalado pelo VertrigoServ. Dessa forma, todos os arquivos de exemplo devero estar dentro de um diretrio chamado: www que est dentro do diretrio de Instalao do VertrigoServ. Se voc optou pelo
26
caminho padro de instalao para VertrigoServ no momento da instalao, o diretrio www estar disponvel em C:\Arquivos de Programas\VertrigoServ\www. Se voc optou por outro caminho de instalao, procure o caminho que voc informou no momento da instalao e procure pelo diretrio: www. Aps encontrar o diretrio: www, crie um novo diretrio dentro dele chamado: apostila_php. Todos os arquivos desenvolvidos em PHP durante o curso devero ser disponibilizados nesse diretrio para realizar os testes. Com o diretrio criado, vamos agora abrir o PHP Editor para criar nosso primeiro exemplo. Os outros exemplos mostrados na apostila podero ser testados tambm da mesma forma que faremos com este exemplo. Abra o PHP Editor e, na barra de endereos mostrada, procure pelo diretrio: apostila_php criado dentro do diretrio: www do VertrigoServ. A gura 9 mostra onde deve ser selecionado o diretrio: apostila_php.
Com o diretrio: apostila_php selecionado, j possvel criar o arquivo PHP que possuir a instruo do primeiro exemplo. Crie um novo arquivo clicando no cone de criao de arquivo ou acessando o menu: Arquivo >> Novo. O PHP Editor ir questionar qual o tipo de arquivo que voc deseja criar, selecione o tipo de arquivo:
27
/PHP e clique no boto: OK. A gura 10 ilustra a janela com as opes de arquivos que podem ser criados.
A seguir ser mostrada a estrutura de um arquivo em PHP. A gura 11 ilustra o formato de um novo arquivo em PHP criado pelo PHP Editor.
As instrues em PHP do exemplo devero car dentro dos delimitadores do PHP: <? e ?>. Os demais comandos que aparecem no arquivo so comandos HTML
28
utilizados para a formatao da pgina HTML nal, criada pelo interpretador PHP, ao nal da interpretao de todas as instrues PHP contidas no arquivo. O comando: <TITLE></TITLE> do HTML o responsvel por alterar o ttulo da pgina PHP que aparece na barra azul do navegador de Internet. Assim, vamos alterar o texto: Documento PHP, que est dentro do comando HTML, para Primeiro Exemplo em PHP. Isso far com que o texto informado seja mostrado como ttulo da pgina no navegador. Feita a alterao, vamos colocar as instrues PHP do exemplo dentro dos delimitadores PHP. Digite a seguinte instruo:
<? //Esse o primeiro exemplo em PHP que vamos testar //Iremos imprimir o texto: O teste funcionou ok!
//Primeiro vamos criar uma varivel que vai receber o texto: $texto = O teste funcionou ok!;
//Agora vamos imprimir esse texto na tela utilizando o comando print: print $texto; ?>
Depois salve o arquivo clicando no cone do disquete ou selecionando o menu: Arquivo >> Salvar. Salve o arquivo com o nome: exemplo4.php. A gura 12 ilustra como car o cdigo arquivo exemplo4.php.
29
Para testarmos a execuo do arquivo de exemplo criado, devemos acessar o navegador de Internet e informar o seguinte comando na barra de endereos: http://localhost/apostila_php/exemplo4.php Ao executar esse comando no navegador, o arquivo: exemplo4.php ser interpretado pelo interpretador PHP, em seguida, transformado em uma pgina HTML e, ao nal, o contedo da pgina HTML gerado disponibilizado pelo servidor WEB Apache do ambiente VertrigoServ. A gura 13 ilustra o resultado do teste.
30
Todos os arquivos desenvolvidos em PHP devero ser testados dessa forma. Para os nossos exemplos, sempre criaremos os arquivos PHP dentro do diretrio: apostila_php, porm para suas prximas aplicaes, crie um novo diretrio e disponibilize os arquivos dentro desse diretrio para testes. Para testar no navegador, sempre coloque o nome do diretrio criado aps o comando: http://localhost/ e informe o nome do arquivo que deseja testar. Seguem alguns exemplos de chamadas de arquivos para testar no navegador.
Sntese
Nesta aula vimos: A sintaxe bsica da linguagem PHP; Como desenvolver e testar um exemplo bsico em PHP.
31
Exerccios propostos
1) Qual das alternativas abaixo no faz parte da estrutura bsica de uma aplicao desenvolvida com PHP: a. Interface com usurio b. Pgina com instrues PHP c. Interface com o banco de dados d. Integrao com banco de dados
2) Para utilizar uma instruo PHP em uma pgina, necessrio (apenas uma alternativa est correta): a. Utilizar os delimitadores PHP representados pelos caracteres: <? E ?> b. Declarar uma varivel c. Utilizar comandos HTML d. Montar a instruo PHP no corpo da pgina HTML
3) Todas as instrues PHP devem ser nalizadas com (apenas uma alternativa est correta): a. Ponto (.) b. Ponto e vrgula (;) c. Vrgula (,) d. Todas as alternativas esto incorretas
4) Ao declarar uma varivel importante observar ( permitida mltipla escolha): a. Se o smbolo $ foi utilizado no incio do nome da varivel b. Se foi declarado o tipo de dados da varivel c. Se a varivel est com letras maisculas e minsculas por causa do case-sensitive d. O tipo de valor que a varivel est recebendo
32
5) O comando PHP que imprime instrues na tela o ( permitida mltipla escolha): a. printf b. print c. printout d. echo
33
Aula 3
Caro aluno(a)! Nesta aula voc estudar sobre os tipos de dados suportados pela linguagem PHP. Mostraremos como utilizar os tipos de dados, como transformar uma varivel que possui um tipo de dado para outro tipo de dados e vamos tambm testar alguns exemplos utilizando os tipos de dados vistos. Boa aula!
Objetivos da Aula
Ao nal desta aula, voc dever ser capaz de: Identicar quais so os tipos de dados utilizados pelo PHP; Utilizar corretamente os tipos de dados nas variveis; Transformar um tipo de dado em outro tipo de dado; Testar o funcionamento dos tipos de dados.
Contedos da Aula
Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Introduo aos Tipos de Dados do PHP; Transformando Tipos de Dados; Exerccios propostos.
34
A linguagem PHP, assim como em outras linguagens para desenvolvimento de aplicaes para Internet, no exige a declarao do tipo de dados no momento da criao de uma varivel. Mas se no informamos qual o tipo de dado de uma varivel, como o PHP consegue trabalhar com os tipos de dados e executar clculos matemticos, por exemplo? A linguagem PHP consegue fazer a distino entre os tipos de dados, por meio do conceito: tipagem automtica, utilizada pelo interpretador PHP. Mas o que a tipagem automtica? A tipagem automtica o processo que o interpretador PHP utiliza para analisar qual o valor que est sendo atribudo a uma varivel e setar o tipo de dados desta varivel de acordo com o tipo de dados do valor atribudo varivel. Veja o exemplo abaixo:
//A segunda varivel est recebendo um valor com casas decimais: $numero2 = 10.5;
//Vamos imprimir o valor das duas variveis e testar: print $numero1; print - ; print $numero2; ?>
35
Se voc testar o exemplo acima, ir vericar que os valores atribudos s duas variveis foram impressos corretamente na tela. At aqui tudo certo, mas como podemos validar que a varivel: $numero1 est atribuda com o tipo de dados: inteiro e a varivel: $numero2 est atribuda com o tipo de dado: nmero com casas decimais? Veremos nos prximos captulos da apostila que a linguagem PHP fornece uma srie de funes que permitem vericar e executar aes diversas. Nesse exemplo, portanto, para vericarmos o tipo de dado de uma varivel, poderemos utilizar uma funo que o PHP disponibiliza e que mostra qual o tipo de dado de uma varivel. A funo que utilizaremos para isso a funo: gettype(nome_variavel). Essa funo ir retornar o tipo de dado de uma varivel. Vamos ento incluir as linhas abaixo no nosso exemplo:
<? //vamos utilizar o comando <BR> do HTML para pular duas linhas print <BR><BR>; //em seguida vamos imprimir o tipo de dado da varivel $numero1 print Tipo de dado da varivel numero1 : . gettype($numero1); //vamos utilizar o comando <BR> do HTML para pular mais duas linhas print <BR><BR>; //depois vamos imprimir o tipo de dado da varivel $numero2 print Tipo de dado da varivel numero2 : . gettype($numero2); ?>
36
De acordo com o resultado, podemos vericar que a varivel $numero1 assumiu o tipo de dado: integer que suporta nmeros inteiros e, a varivel $numero2 assumiu o tipo de dado: double que suporta nmeros com casas decimais. Assim, mesmo no informando na instruo de declarao de uma varivel qual o tipo de dado que ela dever assumir, o interpretador do PHP ir selecion-lo automaticamente, de acordo com o tipo de dado do valor da varivel. Vamos vericar agora quais so os tipos de dados que a linguagem PHP fornece para o desenvolvimento de aplicaes. A linguagem PHP tem suporte para os seguintes tipos de dados: Nmeros inteiros Nmeros com casas decimais Textos Booleanos Array Objeto
37
considerado inteiro um nmero do conjunto de inteiros da matemtica: Z = {..., -2, -1, 0, 1, 2, ...}. Os nmeros inteiros podem ser utilizados em decimal (base 10), hexadecimal (base 16) ou octal (base 8), ou ainda como um nmero inteiro positivo ou negativo. Veja no exemplo abaixo a forma de aplicao dos inteiros:
<? $inteiro1 = 1234; // nmero decimal $inteiro2 = -123; // um nmero negativo $inteiro3 = 0123; // nmero octal (equivalente a 83 em decimal) $inteiro4 = 0x1A; // nmero hexadecimal (equivalente a 26 em decimal) ?>
Os nmeros inteiros hexadecimais devem sempre iniciar com o valor: 0x e os nmeros inteiros octal devem sempre iniciar com o valor: 0. Esses valores, no incio, so os responsveis pela interpretao correta do formato da varivel inteiro pelo interpretador PHP. O tipo de dados que suporta nmeros inteiros em PHP chamado de: integer.
O tipo de dado que suporta nmeros com casas decimais em PHP chamado de: double. Esse tipo de dado permite uma preciso de at 14 decimais. Os nmeros com casas decimais podem ser especicados da seguinte forma: <? $numero1 = 1.234; $numero2 = 23e4; // representa o nmero 230.000 ?>
38
1.3 Textos
O tipo de dado que suporta textos em PHP chamado de: string. Para atribuir valores do tipo texto em uma varivel PHP pode-se utilizar tanto aspas duplas quanto aspas simples. Existe, porm, uma diferena na interpretao dos valores das variveis dependendo do tipo de aspas utilizado. As diferenas so: Atribuindo valores s variveis do tipo: string com aspas simples: O valor da varivel ser exatamente o texto que est entre as aspas simples. Atribuindo valores s variveis do tipo: string com aspas duplas: O valor da varivel poder conter outra varivel entre as aspas duplas ou ainda, caracteres de escape que permitem a formatao dos dados.
Para compreender melhor a diferena entre a atribuio de valores com aspas simples e com aspas duplas, vamos vericar o exemplo: <? /* atribuindo texto com aspas simples, vai ignorar o caracter de escape \n e mostrar como parte do texto */ $texto1 = Esse o texto atribudo com aspas simples, vai ignorar o \n print $texto1; informado ;
//vamos utilizar o comando <br> do HTML para pular uma linha print <br>;
$texto2 = Esse o texto atribudo com aspas simples, vai interpretar o \n informado ; print $texto2; ?>
39
Analisando o resultado do exemplo, vamos vericar que a atribuio feita com aspas simples mostra o texto como foi escrito. O caracter de escape: \n completamente ignorado. J utilizando a atribuio com aspas duplas, o caracter de escape interpretado, portanto, no mostrado como um texto na tela. Os caracteres de escape mais utilizados em PHP so:
Sintaxe \n \r \t \\ \$ \ \ Signicado Nova linha Retorno de carro (semelhante a \n) Tabulao horizontal A prpria barra ( \ ) O smbolo $ Aspa simples Aspa dupla
Verique que o caracter de escape: \n, utilizado no exemplo, executa a ao de quebra de linha. Analisando novamente o resultado do nosso exemplo, executando o exemplo por meio do navegador, vamos identicar que a quebra de linha no foi feita. Por que no foi feita a quebra de linha? A resposta correta para essa questo : por causa do HTML. A linguagem HTML sozinha no entende a ao dos caracteres de escape. necessrio um comando HTML para formatar o texto de acordo com os caracteres de escape informados. O comando em HTML que faz a formatao do texto com caracteres de escape o <pre></pre>. Vamos ento melhorar o nosso exemplo incluindo uma nova impresso da varivel utilizando o comando HTML que interpreta os caracteres de escape:
<? //vericar texto2 com a formatao de quebra de linha do \n print <pre>$texto2</pre>; ?>
Executando novamente o exemplo completo no navegador, podemos vericar que a quebra de linha foi feita corretamente. Inclusive, se analisarmos a ltima linha do exemplo, a varivel $texto2 foi includa dentro do comando <pre></pre>
40
e tambm dentro das aspas duplas. O texto que estava dentro da varivel $texto2 foi mostrado corretamente. Isso acontece porque o interpretador PHP consegue interpretar uma varivel mesmo que esteja dentro de um texto com aspas duplas. J com aspas simples isso no seria possvel. Vamos validar essa informao tentando executar a ltima instruo de comando do nosso exemplo trocando as aspas duplas por aspas simples:
<? //vericar a impresso na tela com aspas simples print <pre>$texto2</pre>; ?>
Na ltima linha impressa, o interpretador PHP no conseguiu interpretar a varivel $texto2, pois a varivel foi colocada entre aspas simples.
1.4 Booleanos
O dado boolean o tipo mais simples que existe no PHP. um tipo de dado comum na maioria das linguagens de programao, pois recebe somente dois valores:
41
Esse tipo de dado muito utilizado para validaes do resultado de outras instrues. Utiliz-lo-emos bastante nos exemplos dos prximos captulos.
1.5 Array
O tipo de dado array utilizado como um vetor na linguagem PHP. Vetores so mapeamentos de valores que cam armazenados no disco HD do computador. Podemos criar uma varivel do tipo array e utilizar as posies do mapeamento do disco para armazenar mais de um valor. A quantidade das posies informada na criao do array. Existem duas maneiras de criar uma varivel do tipo array, veja o exemplo.
<? //forma 1 - criando um array e setando o valor do array $array1[1] = Posio 1 do array1; $array1[2] = Posio 2 do array1; $array1[3] = Posio 3 do array1; //imprimindo os dados do array1 print $array1[1] $array1[2] $array1[3] <BR>;
//forma 2 - criando um array e setando o valor do array $array2 = array(1=>Posio 1 do array2, 2=> Posio 2 do array2, 3=>Posio 3 do array2); //imprimindo os dados do array1 print $array2[1] ?> $array2[2] $array2[3] <BR>;
No exemplo, criamos dois arrays utilizando as duas formas possveis, mas utilizamos como chave da posio nmeros inteiros. Em PHP podemos tambm criar arrays utilizando textos como chave da posio do mapeamento dos dados.
42
Veja o exemplo.
<? //criando array com chave de posio do tipo texto $arrayTexto[Nome] = Jos Aparecido; $arrayTexto[Idade] = 22; //imprimindo os dados do arrayTexto print $arrayTexto[Nome]; print <br>; print $arrayTexto[Idade]; ?>
Alm de podermos utilizar chave de posio do tipo texto, podemos tambm atribuir qualquer tipo de dado suportado pelo PHP para a posio de uma varivel do tipo: array. Trabalharemos mais com arrays nos prximos captulos do nosso livro-texto.
1.6 Objeto
Desde a verso 4 a linguagem PHP tem suporte programao orientada a Objetos. A partir dessa verso todos os conceitos utilizados pela Orientao a Objetos podem ser utilizados em uma aplicao desenvolvida em PHP. Na verso 5 porm, esses conceitos foram reforados e melhorados na linguagem e cou mais fcil desenvolver aplicaes utilizando os paradigmas da Orientao a Objetos. No captulo 7 da apostila analisaremos com mais detalhes a programao orientada a objetos em PHP. O estudo de caso que desenvolveremos tambm utilizar os conceitos da Orientao a Objetos.
Como o interpretador PHP utiliza a tipagem automtica para indicar o tipo de dado de uma varivel, pode acontecer que o tipo de dado indicado no seja o mais
43
adequado ou o esperado por algum procedimento da aplicao. Por esse motivo, h possibilidade de alterarmos o tipo de dado de uma varivel, para que os procedimentos possam ser executados corretamente. A linguagem PHP disponibiliza trs formas para transformao dos tipos de dados de uma varivel.
2.1 Coero
A Coero uma forma utilizada automaticamente pelo interpretador PHP. Um exemplo de coero utilizado quando uma varivel recebe o resultado de uma operao matemtica entre dois nmeros, sendo um nmero inteiro e outro nmero com casas decimais. A varivel que receber o valor ter seu tipo de dados alterado para nmeros com casas decimais ou o tipo de dado: double. Veja o exemplo.
tipo
de
dados
da
varivel
$inteiro
$resultado = $inteiro; print valor da varivel resultado = $resultado <br>; print tipo de dados da varivel resultado = .
gettype($resultado) . <br>;
// gerando a coero do tipo de dado da varivel resultado com a operao //matemtica de soma $resultado = $inteiro+$real;
44
print valor da varivel resultado = $resultado <br>; print tipo de dado da varivel resultado = .
Ao analisarmos o resultado do exemplo, podemos vericar que o tipo de dado da varivel $resultado indicado como: integer, quando a varivel $resultado recebe a varivel $inteiro. A varivel resultado, porm, passou a assumir o tipo de dados: double, quando foi atribudo o valor da operao matemtica entre a varivel $inteiro e a varivel $real para a varivel $resultado. Isso ocorre porque a operao matemtica de somar dois nmeros: um nmero inteiro e o outro nmero real com casas decimais resulta opera em um nmero real. Ento a operao utilizada automaticamente pelo interpretador PHP e no temos como utilizar manualmente a operao de coero.
A transformao explicta pode ser utilizada pelos desenvolvedores e considerada a mais bsica de transformao de tipos de dado das variveis. Para utiliz-lo precisamos dos cast, conversores de um tipo de dado para outro tipo de dado. Os tipos de cast permitidos so: (int), (integer) = altera o tipo de dado para integer; (real), (double), (oat) = altera o tipo de dado para oat; (string) = altera o tipo de dado para string; (array) = altera o tipo de dado para array; (object) = altera o tipo de dado para objeto.
Veja o exemplo.
45
//imprimir o valor e o tipo de dado da varivel $numero print valor da varivel = $numero <br>; print tipo de dado da varivel = . gettype($numero) . <br>;
// fazer a converso do tipo de dado da varivel $numero utilizando cast $numero = (double) 1;
print valor da varivel depois do cast = $numero <br>; print tipo de dado da varivel depois do cast = . gettype($numero) . <br>; ?>
Executando o exemplo acima, podemos vericar que a varivel $numero passou a assumir o tipo de dado: double.
Essa forma tambm pode ser utilizada pelos desenvolvedores, basta que a funo settype da linguagem PHP seja informada na instruo. O exemplo a seguir ilustra a utilizao da funo settype(nome_variavel):
//imprimir o valor e o tipo de dado da varivel $texto print valor da varivel = $texto <br>; print tipo de dado da varivel = . gettype($texto) . <br>;
46
// fazer a converso do tipo de dado da varivel $texto utilizando settype settype($texto,integer); // convertendo o tipo de dado para integer
print valor da varivel depois da transformao = $texto <br>; print tipo de dado da varivel depois da transformao = . gettype($texto) . <br>; ?>
No exemplo, foi feita a transformao de um tipo de dado texto string para o tipo de dado inteiro integer utilizando a funo settype. H vrias funes disponveis na linguagem PHP e, durante o curso, utilizaremos vrias dessas funes. Porm, para visualizar todas as funes disponveis na linguagem, voc deve consultar o Manual PHP disponvel na instalao do PHP Editor. Para acessar o manual v at o menu: Iniciar >> Programas >> PHP Editor e selecione o item Manual PHP.
47
Sntese
Nesta aula vimos: Os tipos de dados suportados pela linguagem PHP; Como podemos transformar o tipo de dado de uma varivel para outro tipo de dado; Testes com os tipos de dados da linguagem PHP.
Exerccios propostos
1) Selecione a alternativa incorreta. A linguagem PHP suporta os seguintes tipos de dados: a. Nmeros b. Textos c. Datas d. Lista de Valores
2) O tipo de dado que permite duas formas de atribuio o (apenas uma alternativa est correta): a. Integer b. Double c. Boolean d. String
3) O tipo de dado da varivel abaixo ser (apenas uma alternativa est correta): $numero = 1; a. Integer b. Boolean
48
c. String d. Double
4) Para utilizar caracteres de escape na impresso de instrues em PHP necessrio (apenas uma alternativa est correta): a. Utilizar o comando HTML <br> b. Utilizar o comando HTML <b></b> c. Utilizar o comando HTML <pre></pre> d. Todas as alternativas esto incorretas
5) A instruo abaixo ir (apenas uma alternativa correta): $numero = (double) 1; a. Transformar a varivel para String b. Transformar a varivel para Double c. Transformar a varivel para Integer d. Transformar a varivel para Boolean
49
Aula 4
Objetivos da Aula
Ao nal desta aula, voc dever ser capaz de: Identicar os tipos de variveis existentes em PHP; Utilizar variveis para criar rotinas em PHP; Utilizar funes do PHP para trabalhar com as variveis; Identicar a diferena entre variveis e constantes; Utilizar constantes para criar rotinas em PHP; Testar o funcionamento das variveis e constantes.
Contedos da Aula
Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Trabalhando com variveis; Funes PHP para trabalhar com variveis; Trabalhando com constantes; Exerccios propostos.
50
No captulo anterior, vimos que na linguagem PHP, no h necessidade de declarar as variveis com um tipo de dado especco, pois o interpretador PHP utiliza a tipagem automtica para atribuir um tipo de dado a uma varivel. Dessa forma, podemos inicializar uma varivel somente quando realmente necessitamos dela em um procedimento da aplicao que estamos desenvolvendo. Relembrando o que foi mencionado no captulo 2 introduo a linguagem PHP -, o nome da varivel dever sempre possuir o smbolo: $ no incio. justamente esse smbolo que indica ao interpretador PHP que uma varivel est sendo declarada do smbolo at o ponto e vrgula que ir encerrar a instruo de declarao da varivel. Tambm devemos relembrar que as variveis em PHP so case-sensitive, ou seja, o nome da varivel tem distino entre letras maisculas e minsculas. Agora, aps relembrarmos os conceitos bsicos a respeito das variveis, vamos vericar quais so os tipos de variveis disponveis na linguagem PHP. Alm das variveis bsicas do PHP criadas pelos desenvolvedores, h outros tipos de variveis que podem ser utilizadas. Em geral, so criadas pelo servidor WEB e o interpretador PHP para auxiliar nos procedimentos da aplicao. As variveis aqui conceituadas como bsicas so todas aquelas utilizadas nos exemplos criados at agora no curso. A partir de agora conheceremos outros tipos de variveis que poderemos utilizar em nossos exemplos e posteriores aplicaes.
Quando utilizamos pginas PHP e HTML para fazer interao entre o usurio e a aplicao, podemos utilizar as variveis enviadas pelo navegador. H dois tipos de variveis enviadas pelo navegador: 1. POST = so as variveis enviadas pelos formulrios em HTML 2. GET = so as variveis enviadas ou por formulrios HTML ou pelo endereo do navegador - URL no endereo do navegador.
51
Para vericar a diferena entre as duas variveis, vamos analisar o exemplo a seguir. Neste exemplo criaremos um formulrio HTML em uma pgina PHP para passar um valor por meio de uma varivel e depois imprimir o valor da varivel na tela. Utilizaremos o mesmo teste para variveis do tipo POST e GET. Vamos ao exemplo.
Pgina1: exemplo11_form.php <HTML> <HEAD> <TITLE>Exemplo 11 - Form</TITLE> </HEAD> <BODY> <form name=form1 action=exemplo11.php method=post> Nome: <input type=text name=nome><br> <input type=submit name=btnEnviar value=Enviar valor> </form> </BODY> </HTML>
Pgina 2: exemplo11.php <HTML> <HEAD> <TITLE>Exemplo 11</TITLE> </HEAD> <BODY> <? $nome = $_POST[nome]; print O nome informado : $nome <br>; ?> </BODY> </HTML>
52
Vamos agora analisar o exemplo. A pgina exemplo11_form.php criada, possui apenas um formulrio HTML com um nico campo texto chamado: nome. O valor informado nesse campo texto ser enviado para a pgina: exemplo11.php, aps clicar no boto: Enviar Valor. O comando que informa para onde ser enviado o valor, est denido no comando: action=exemplo11.php do comando <form></form> do formulrio HTML. O tipo de varivel a ser enviado para a pgina denido no comando: method=post do comando <form></form> do formulrio HTML. Nesse exemplo, ento, enviaremos o valor por meio de uma varivel do tipo POST. Porm, se o desenvolvedor desejar enviar o valor por meio de uma varivel do tipo GET, utilizando esse mesmo formulrio, poder faz-lo trocando o texto post por get. Analisando a pgina 2, exemplo11.php, identicamos na primeira linha, aps o delimitador PHP, a instruo: $nome = $_POST[nome]. Nesse comando estamos pegando o valor da varivel POST, enviada pelo navegador, e atribuindo a varivel $nome para depois imprimir na tela. Tambm possvel imprimir direto o contedo da varivel enviada pelo navegador, para isso, basta alterar o comando para: print $_POST[nome]; Ao executar o exemplo acima, veremos que, aps clicar no boto: Enviar valor, o navegador ir para a pgina exemplo11.php e mostrar o valor informado no campo de texto do formulrio da pgina exemplo11_form.php Vamos agora utilizar o mesmo exemplo para testar as variveis do tipo: GET. Para isso, altere o method=post do formulrio para method=get. Execute novamente o teste. Qual foi o resultado? Nesse caso, no foi mostrado o valor informado, certo? Isso mesmo, porque a varivel agora est indo por meio do tipo: GET. Verique agora a barra de endereos do navegador da internet, ele dever mostrar o seguinte comando:
http://localhost/apostila_php/exemplo11.php?nome=12&btnEnviar=Enviar+valor
Por que est mostrando os dados com o tipo: GET e com o tipo: POST? Porque o tipo de varivel GET envia os valores por meio do endereo do navegador. E como fazemos para mostrar o valor enviado pelo navegador na pgina 2, exemplo11.php? Devemos alterar a instruo: $_POST[nome] para $_GET[nome], assim
53
o nome ser mostrado corretamente na pgina exemplo11.php. Faa o teste novamente e valide essa informao. Esses tipos de variveis sero amplamente utilizados para o desenvolvimento de aplicaes que fazem interao com usurios, porm h duas diferenas muito importantes entre os dois tipos de variveis e que devem ser levadas em considerao na anlise de qual tipo de varivel utilizar: 1. Os tipos de varivel GET so enviados pelo endereo do navegador e por isso todos os dados cam expostos na barra de endereos. Assim evite utilizar esse tipo de varivel quando houver dados sigilosos envolvidos. 2. A barra de endereo do navegador possui limitao de tamanho, mximo 255 caracteres, portanto, os valores dos tipos de varivel GET no podero ultrapassar esse tamanho. Se ultrapassar, os dados no sero enviados por completo, sero enviados somente os dados at o tamanho limite estabelecido pelo navegador. Analisando essas informaes, podemos denir que o tipo de varivel indicado para formulrios em HTML o tipo: POST. O GET poder ser utilizado em outros procedimentos da aplicao. Veremos mais detalhes sobre esses dois tipos de variveis no decorrer do curso.
A linguagem PHP possui vrias variveis de ambiente que podem auxiliar durante o desenvolvimento de uma aplicao. Para visualizar o contedo de uma varivel de ambiente, basta utilizar a instruo: $_SERVER[nome_da_variavel]. H, por exemplo, a varivel: $_SERVER[PHP_SELF] que possui o nome e o caminho do prprio arquivo como valor. H tambm outras variveis que possuem dados sobre o navegador do usurio, o servidor HTTP, e at a verso do PHP instalada no servidor. Para visualizar todas as variveis de ambiente disponveis, podemos utilizar a funo phpinfo() ou a opo: View phpinfo() screen, disponvel na pgina principal do VertrigoServ. As variveis de ambiente esto listadas abaixo do item: Apache Environment.
54
A linguagem PHP disponibiliza tambm variveis de sesso que permitem o controle da sesso do usurio. Esse tipo de varivel comumente utilizado em aplicaes que possuem autenticao de usurio. Para visualizar o contedo de uma varivel de sesso, basta utilizarmos a instruo: $_SESSION[nome_da_variavel]. Estudaremos com mais detalhes sobre as variveis de sesso no captulo 8 Controle de Sesso.
A linguagem PHP disponibiliza vrias funes que auxiliam no desenvolvimento de aplicaes. Nesse tpico, estudaremos as principais funes da linguagem que permitem manipular as variveis criadas em PHP.
As funes que testam o tipo de dado de uma varivel so: is_int = testa se o tipo de dado da varivel inteiro; is_integer = testa se o tipo de dado da varivel inteiro; is_real = testa se o tipo de dado da varivel real nmero com casas decimais; is_long = testa se o tipo de dado da varivel inteiro longo; is_oat = testa se o tipo de dado da varivel oat nmero com casas decimais; is_string = testa se o tipo de dado da varivel string; is_array = testa se a varivel um array; is_object = testa se a varivel um objeto.
55
O valor de retorno de todas as funes booleano, ou seja, verdadeiro ou falso true | false ou 1 | 0. O valor verdadeiro ser retornado quando o tipo de dado da varivel est de acordo com a funo utilizada. Vamos executar o exemplo a seguir e vericar o funcionamento da funo is_string:
Pgina: exemplo12.php <HTML> <HEAD> <TITLE>Exemplo 12</TITLE> </HEAD> <BODY> <? $variavelString = Texto da varivelString; print is_string($variavelString); ?> </BODY> </HTML>
Ao executarmos o exemplo12.php, ser impresso na tela o valor 1. Esse valor o retorno da funo is_string e signica que a varivel: $variavelString possui o tipo de dado: String.
Toda vez que criamos uma varivel, cria-se um espao em memria para ser utilizado pela aplicao. Dessa forma, quando trabalhamos com vrias variveis em uma aplicao, todas estaro consumindo espao em memria. Portanto, muito importante ao trabalharmos com variveis, destrumos ou, na linguagem do computador, desalocarmos a varivel da memria quando j no precisamos dela. A funo que permite desalocar uma varivel da memria : unset(nome_ variavel). Aps utilizar a funo unset(), a varivel ser destruda, portanto, os valores da
56
varivel sero perdidos. Assim, somente utilize essa funo quando tiver certeza que a varivel no ser mais utilizada por algum procedimento dentro da aplicao.
Existem duas funes que vericam se uma varivel possui valor: isset(nome_da_variavel) empty(nome_da_variavel)
Como na maioria das funes PHP, o retorno dessas duas funes tambm booleano. H, porm, uma diferena entre as duas variveis que precisamos analisar antes de utiliz-las. Na primeira funo a funo isset vericado se a varivel j foi criada na aplicao, ou seja, se j foi utilizada alguma vez pela aplicao. Caso a varivel no tenha sido criada ainda, retornar o valor 0 ou false. Na segunda funo a funo empty ser vericado se a varivel possui valor vazio ou nulo, porm a varivel j deve estar criada na aplicao. Vamos executar o exemplo que segue para compreender melhor essa diferena entre as duas funes:
Pgina: exemplo13.php <HTML> <HEAD> <TITLE>Exemplo 13</TITLE> </HEAD> <BODY> <? $variavel1 = ; // verica se a $variavel1 possui valor vazio ou nulo print variavel1 = . empty($variavel1); print <br>; //destroi a $variavel1 unset($variavel1);
57
Constantes podem ser denidas como uma varivel que possui um valor constante, ou seja, o valor ser denido uma nica vez e jamais ser alterado durante a execuo da aplicao. Essa a principal diferena entre uma constante e uma varivel. Como o prprio nome indica, as constantes possuem valores que jamais sero alterados por algum procedimento dentro da aplicao. J as variveis podem ter o seu valor alterado, dependendo do tipo de ao que for executado pela aplicao. As constantes geralmente so utilizadas para receber valores de conguraes / parmetros que sero utilizados pelo sistema. Um exemplo de constante pode ser um login e senha para conexo da aplicao com o banco de dados. Esse dado sempre ser o mesmo durante a execuo de toda a aplicao, portanto, poder estar denido em uma constante. Para denir uma constante na aplicao, utilizamos a funo: dene(nome_ da_constante,valor_da_constante). A linguagem PHP possui algumas constantes pr-denidas que permitem vericar as conguraes do ambiente onde o interpretador PHP est instalado. Algumas constantes disponveis possuem como valor: a verso do PHP, o Sistema Operacional do servidor, o arquivo em execuo, entre outras informaes. Para visualizar todas as constantes pr-denidas disponveis, podemos utilizar a funo phpinfo() ou ento utilizar a opo: View phpinfo() screen, disponvel na pgina principal do VertrigoServ. Veja o exemplo que mostra como denir e utilizar uma constante dentro das pginas PHP:
Pgina: exemplo14.php
58
<HTML> <HEAD> <TITLE>Exemplo 14</TITLE> </HEAD> <BODY> <? // denir a constante taxa de juros dene(taxaJuros,0.5);
// imprime o valor da constante na tela print taxa de Juros = . taxaJuros; print <br>;
// imprime o resultado do clculo com a constante print valor = . $valor; ?> </BODY> </HTML>
59
Sntese
Nesta aula vimos: Os tipos de variveis disponveis na linguagem PHP; Como trabalhar com as variveis; Funes PHP que auxiliam nos procedimentos com variveis; A diferena entre variveis e constantes; Como trabalhar com as constantes; Testes com variveis e constantes.
Exerccios propostos
1) Os tipos de variveis mais utilizados no desenvolvimento de aplicaes com PHP so ( permitida mltipla escolha): a. Sesso b. Enviadas pelo Navegador c. Ambiente d. Memria
2) Complete a frase abaixo com uma das alternativas: As variveis que utilizam a barra de endereos do navegador a .... a. Sesso b. Post c. Get d. Servidor
3) O tipo de varivel que possui os dados da congurao do PHP (apenas uma alternativa correta): a. Ambiente
60
4) A funo que verica se a varivel est setada e com o valor vazio a (apenas uma alternativa correta): a. is_string b. unset c. empty d. isset
5) A principal diferena entre uma varivel e uma constante (apenas uma alternativa correta): a. A constante somente aceita um tipo de dado b. A constante tem limitao de valor c. O valor da constante no muda nunca na aplicao d. A constante no pode ser utilizada em algumas instrues
61
Aula 5
Caro aluno(a)! Nesta quinta aula voc conhecer os tipos de operadores disponveis na linguagem PHP e a diferena entre eles. Alm disso, analisaremos o que uma expresso condicional e quando podemos utiliz-las dentro de nossas aplicaes. Por m, realizaremos alguns testes para identicar melhor a funcionalidade dos operadores e tambm da expresso condicional. Bons Estudos!
Objetivos da Aula
Ao nal desta aula, voc dever ser capaz de: Identicar os tipos de operadores da linguagem PHP; Utilizar os tipos de operadores; Identicar o que uma expresso condicional; Utilizar a expresso condicional.
Contedos da Aula
Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Conhecendo os Tipos de Operadores; Conhecendo a Expresso Condicional; Exerccios Propostos.
62
A linguagem PHP, assim como outras linguagens de programao, disponibiliza vrios tipos de operadores para auxiliar na execuo de procedimentos dentro das aplicaes. Nesse captulo, vericremos quais so os tipos de operadores e como podemos utiliz-los em nossas pginas PHP.
Os operadores aritmticos so aqueles que auxiliam em clculos e expresses matemticas. Esses operadores somente podero ser utilizados entre variveis com os tipos de dados nmeros inteiros e/ou nmeros com casas decimais nmeros reais. Observe quais so os operadores aritmticos disponveis em PHP.
+ * / % adio subtrao multiplicao diviso mdulo
63
// imprime o valor das variveis print valor da varivel numero1 = . $numero1; print <br>; print valor da varivel numero2 = . $numero2; print <br><br>;
// faz a soma entre as variveis e mostra o resultado print Soma = . ($numero1+$numero2); print <br>;
// faz a diferena entre as variveis e mostra o resultado print Subtrao = . ($numero1-$numero2); print <br>;
// faz a multiplicao entre as variveis e mostra o resultado print Multiplicao = . ($numero1*$numero2); print <br>;
// faz a diviso entre as variveis e mostra o resultado print Diviso = . ($numero1/$numero2); print <br>;
// faz a diviso entre as variveis e mostra o resto da diviso print Mdulo - Resto da Diviso = . ($numero1%$numero2); print <br>; ?> </BODY> </HTML>
64
Para os tipos de dados string, h apenas um operador disponvel, o que permite a concatenao entre variveis do tipo string. Concatenar duas variveis do tipo string signica juntar o valor das duas variveis. O quadro a seguir mostra o smbolo que representa o operador de concatenao em PHP.
. concatenao
Se voc observar novamente os ltimos exemplos desenvolvidos, utilizamos o operador de concatenao para unir textos com variveis. O exemplo abaixo mostra a concatenao entre duas variveis do tipo texto:
Pgina: exemplo16.php <HTML> <HEAD> <TITLE>Exemplo 16</TITLE> </HEAD> <BODY> <? // utilizando operador String $texto1 = Vamos testar ; $texto2 = o operador de concatenao;
// imprime o valor das variveis concatenadas print $texto1 . $texto2; ?> </BODY> </HTML>
65
Os operadores de atribuio tm como funo retornar um valor atribudo de acordo com a operao indicada. As operaes podem utilizar operadores aritmticos ou ainda o operador: string. A atribuio feita sempre por valor, e no por referncia. Isso signica que a atribuio ir alterar denitivamente o valor da varivel armazenada em memria. Observe no quadro a seguir os operadores de atribuio disponveis em PHP.
= += -= *= /= %= .= atribuio simples atribuio com adio atribuio com subtrao atribuio com multiplicao atribuio com diviso atribuio com mdulo atribuio com concatenao
Na maioria dos exemplos que desenvolvemos at agora, utilizamos o operador bsico de atribuio para atribuir um valor as variveis. No exemplo abaixo, vamos utilizar outros dois operadores de atribuio para vericarmos o seu funcionamento:
Pgina: exemplo17.php <HTML> <HEAD> <TITLE>Exemplo 17</TITLE> </HEAD> <BODY> <? // utilizando operadores de atribuio $texto = O valor da varivel numero = ; $numero = 5;
66
$texto .= $numero;
Os operadores lgicos so geralmente utilizados em expresses e comparaes entre condies ou variveis que retornam valores booleanos. Os operadores lgicos disponveis em PHP so os que mostramos no quadro a seguir.
! && || no (inverso) e lgico ou lgico
Nos exemplos dos prximos captulos e tambm no desenvolvimento de nosso estudo de caso, muitas vezes utilizanremos os operadores lgicos para validar valores de variveis e condies.
67
variveis e expresses. O retorno de uma comparao ser sempre um valor do tipo: booleano. Veja quais so os operadores de comparao disponveis em PHP.
== != < > <= >= igual a diferente de menor que maior que menor ou igual a maior ou igual a
Nos exemplos dos prximos captulos e tambm no desenvolvimento de nosso estudo de caso, muitas vezes utilizando os operadores de comparao para comparar os valores de variveis e tambm expresses.
Os operadores de atribuio tm como funo aumentar (incremento) ou diminuir (decremento) o valor de uma varivel. So operadores sempre utilizados em tipos de dados numricos e o valor da varivel ter sempre o incremento/decremento de 1. Por exemplo: se uma varivel possui o valor 10 e utilizamos o operador de incremento aps a utilizao do operador, a varivel ter o valor 11. Se utilizssemos o decremento nessa mesma varivel, o valor seria diminudo para 9. O incremento/decremento ser feito de acordo com a ordem que disponibilizamos o operador e a varivel. Se colocarmos o operador de incremento/decremento antes da varivel, a ao do operador ser feita antes de mostrar a varivel, caso contrrio, se o operador for colocado depois da varivel, a ao do operador ser feita depois de mostrar a varivel. Observe os operadores de incremento e decremento disponveis em PHP.
++ -Incremento Decremento
68
operadores de incremento e decremento nos exemplos dos prximos captulos. No exemplo que segue j podemos ter uma noo de como funcionam estes operadores:
Pgina: exemplo18.php <HTML> <HEAD> <TITLE>Exemplo 18</TITLE> </HEAD> <BODY> <? // utilizando operadores de incremento e decremento $numero = 5;
// imprime o valor da varivel $numero utilizando o operador de incremento print $numero++; print <BR>;
// imprime o valor da varivel $numero utilizando o operador de decremento print $numero--; print <BR>; ?> </BODY> </HTML>
A expresso condicional considerada um tipo de operador. Tambm conhecida como um operador de seleo ternrio. A funo da expresso condicional vericar uma dada condio e, dependendo do valor da condio retornado valor booleano: true ou false a expresso executar
69
O interpretador PHP interpreta a expresso condicional da seguinte maneira: 1. Avalia a condio feita; 2. Se o resultado da condio for verdadeiro true ou 1 - a expresso condicional ir mostrar o valor da instruo1; 3. Se o resultado da condio for falso false ou 0 a expresso condicional ir mostrar o valor da instruo2.
A expresso condicional tambm conhecida pelos desenvolvedores por if rpido. O if uma estrutura de controle que tambm valida condies. Estudaremos mais sobre o if no prximo captulo. No exemplo a seguir podemos vericar o funcionamento da expresso condicional. Tambm utilizaremos um operador de comparao, o operador de igualdade:
Pgina: exemplo19.php <HTML> <HEAD> <TITLE>Exemplo 19</TITLE> </HEAD> <BODY> <? // testando a expresso condicional $numero1 = 5; $numero2 = 4;
/* utiliza a expresso condicional para vericar se os valores das variveis: $numero1 e $numero2 so iguais e depois imprime um texto de acordo com o retorno da condio / comparao feita */
70
Sntese
Nesta aula estudamos: Os tipos de operadores disponveis na linguagem PHP; Como e quando utilizamos os tipos de operadores; O que uma expresso condicional; Como e quando podemos utilizar uma expresso condicional; Realizamos testes para validar a funcionalidade dos tipos de operadores e tambm da expresso condicional.
71
Exerccios propostos
1) Os operadores que permitem a realizao de clculos matemticos so (mltipla escolha): a. Aritmticos b. String c. Atribuio d. Incremento
2) Complete a frase com uma das alternativas abaixo: A concatenao uma operao permitida pelo operador ... e tem como funo .... a. Aritmtico, adicionar variveis b. Atribuio, atribuir valor s variveis c. String, unir valores das variveis d. Decremento, separar o valor da varivel em dois
3) O operador que retorna o resto de uma diviso (apenas uma alternativa correta): a. Aritmtico Diviso b. Aritmtico Mdulo c. Aritmtico - Incremento d. Aritmtico - Atribuio
4) Os operadores de atribuio so utilizados para (mltipla escolha): a. Atribuir valores as variveis b. Atribuir tipo de dados em variveis c. Executar uma operao matemtica em uma varivel d. Executar uma operao matemtica somente aps a atribuio de um valor
72
5) A expresso condicional pode ser denida como ( permitida mltipla escolha): a. Um operador aritmtico b. Um operador de atribuio c. Um comando de seleo d. Um operador de seleo ternrio
73
Aula 6
ESTRUTURAS DE CONTROLE
Caro aluno(a)! Nesta sexta aula voc estudar sobre as estruturas de controle disponveis na linguagem PHP. Vamos aprender quais so essas estruturas e quando podemos utiliz-las dentro das nossas aplicaes. Tambm desenvolveremos vrios exemplos com as estruturas de controle para testar e compreender melhor a funo de cada uma. Bons Estudos!
Objetivos da Aula
Ao nal desta aula, voc dever ser capaz de: Identicar quais so as estruturas de controle do PHP; Identicar como e quando utilizar as estruturas de controle; Testar o funcionamento das estruturas de controle.
Contedos da Aula
Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Introduo s Estruturas de Controle; Estruturas de Seleo; Estruturas de Repetio; Estruturas de Quebra de Fluxo; Exerccios Propostos.
74
As estruturas de controle disponveis na linguagem PHP so comuns na maioria das linguagens de programao. Se voc j possui o conhecimento de alguma linguagem de programao, identicar vrias caractersticas semelhantes nas estruturas de controle do PHP. A sintaxe das estruturas de controle do PHP tambm bem similar sintaxe de outras linguagens. Se voc j trabalhou com a linguagem de programao C ou Java, vai vericar que a sintaxe das estruturas de controle bem semelhante. Nos prximos tpicos desse captulo, estudaremos os trs tipos de estruturas de controle disponveis na linguagem PHP: Estruturas de Seleo, Estruturas de Repetio e Estruturas de Quebra de Fluxo. Na sintaxe e tambm nos exemplos, veremos que, para os dois primeiros tipos de estruturas, existe uma caracterstica em comum, os blocos de comando. Um bloco de comando consiste em um agrupamento de instrues PHP dentro de uma estrutura de controle. Esses blocos so delimitados pelos caracteres: { que representa o incio do bloco e } que representa o m do bloco de comando. Dependendo da estrutura de controle utilizada e tambm do procedimento que ser executado dentro da estrutura de controle, poderemos ter: nenhum, um ou mais blocos de comando. A existncia de um bloco de comando ser dispensada quando o procedimento tiver apenas uma instruo de comando. A seguir, vericaremos detalhadamente quais so as estruturas de controle e qual a aplicao de cada uma delas.
2 ESTRUTURAS DE SELEO
As estruturas de seleo, tambm conhecidas por estruturas condicionais, tm como funo validar condies e comparar o resultado das condies. Aps executar as funes de validao e comparao, as estruturas de seleo iro executar os blocos de comando, denidos de acordo com o resultado da comparao.
75
A expresso condicional, que vericamos no captulo anterior, pode tambm ser considerada como uma estrutura de controle de seleo. Existem dois tipos de estruturas de seleo: If e Switch. A seguir vamos vericar quais as diferenas e sintaxe de cada uma delas.
2.1 If
O If considerado a estrutura de controle mais comum das linguagens de programao e muito utilizado no desenvolvimento das aplicaes. Possui um sintaxe bem simples:
IF(condio) Instruo;
Ou
A primeira sintaxe utilizada quando temos apenas uma instruo PHP a ser executada aps a validao da condio. No necessrio, portanto, criar um bloco de comando para agrupar e executar as instrues. Na segunda sintaxe, temos mais de uma instruo PHP a ser executada, portanto, necessria a criao de um bloco de comando para agrupar as instrues e execut-las conforme a seqncia denida. O If sempre executar o bloco de comando ou a instruo nica se a condio entre parnteses retornar um resultado booleando verdadeiro. Caso contrrio, o bloco de comando ou a instruo nica no sero executadas. Veja o exemplo.
76
Pgina: exemplo20.php <HTML> <HEAD> <TITLE>Exemplo 20</TITLE> </HEAD> <BODY> <? // testando o if $numero1 = 5; $numero2 = 4;
/* utiliza o if para vericar se os valores das variveis: $numero1 e $numero2 so diferentes e depois imprime um texto caso o retorno da condio seja verdadeiro neste exemplo estamos tambm utilizando o operador de comparao - desigualdade */
if ($numero1!=$numero2){ print As variveis possuem valores diferentes; print <BR>; } ?> </BODY> </HTML>
Analisando o resultado do teste, vericaremos que a mensagem: As variveis possuem valores diferentes foi impressa na tela, pois realmente elas possuem valores diferentes. Utilizando o operador de comparao de desigualdade, a condio retornou um valor booleano verdadeiro, pois as variveis possuem valores diferentes. Vamos agora utilizar o mesmo exemplo, porm alterando a condio para vericar se os valores das variveis so iguais. Para isso, vamos utilizar o operador de comparao de igualdade:
77
Pgina: exemplo21.php <HTML> <HEAD> <TITLE>Exemplo 21</TITLE> </HEAD> <BODY> <? // testando o if $numero1 = 5; $numero2 = 4;
/* utiliza o if para vericar se os valores das variveis: $numero1 e $numero2 so iguais e depois imprime um texto caso o retorno da condio seja verdadeiro neste exemplo estamos tambm utilizando o operador de comparao - igualdade */ if ($numero1==$numero2){ print iguais; print <BR>; } ?> </BODY> </HTML> As variveis possuem valores
Quando executamos o exemplo, agora, no foi mostrada nenhuma mensagem na tela, por qu? Porque a condio retornou um valor falso, ou seja, o valor das duas variveis no verdadeiro. Certo, mas neste caso ento, como fazemos para mostrar alguma mensagem quando o valor da condio falso? Podemos utilizar a instruo: else. A sintaxe do IF utilizando a instruo else :
78
As instrues do Else sero executadas somente quando o valor da condio do If for falso. Podemos ainda utilizar um encadeamento de condies quando precisamos analisar uma srie de condies no mesmo procedimento. Esse encadeamento uma mistura entre IFs e Elses dentro do cdigo. Veja como ca a sintaxe:
79
} Else IF(condio3) { Instruo1; Instruo2; Etc; } Else IF(condioN) { Instruo1; Instruo2; Etc; } Else { Instruo1; Instruo2; Etc; }
Mostramos na sintaxe acima, que no existe um limite para o encadeamento de ifs. Esse tipo de procedimento pode ser utilizado de acordo com a quantidade de condies e comparaes que devem ser executadas pela aplicao. importante lembrar que as instrues do Else If sero executadas somente se a condio do IF tiver valor verdadeiro, caso contrrio, as instrues executadas sero as do Else nal, que no possui um IF com uma condio para comparar, por isso executado quando o valor da condio de todos os Ifs for falso. Vamos testar o exemplo abaixo para compreender melhor o funcionamento do IF encadeado:
80
// utilizando o If encadeado if ($numero1==$numero2){ print As variveis: numero1 e numero2 possuem valores iguais; print <BR>; } else if ($numero1==$numero3){ print As variveis: numero1 e numero3 possuem valores iguais; print <BR>; } else if ($numero2==$numero3){ print As variveis: numero2 e numero3 possuem valores iguais; print <BR>; } else { print As trs variveis possuem valores diferentes; print <BR>; } ?> </BODY> </HTML>
2.2 Switch
A estrutura de seleo Switch funciona de maneira semelhante aos Ifs encadeados. Essa estrutura muito utilizada quando necessrio comparar o valor de uma varivel ou ento de uma mesma condio com diversos valores.
81
Se utilizarmos o IF encadeado para testar uma varivel com diversos valores, teremos sempre que montar um IF com vrios Else If at completar todos os valores que desejamos testar. Utilizando o Switch para esse mesmo procedimento, o cdigo car mais enxuto e ter o mesmo efeito. Vamos analisar a sintaxe do switch:
Switch(valor_a_ser_comparado){ Case valor1: Instruo; Break; Case valor2: Instruo; Break; Default: Instruo; Break; }
Na sintaxe acima, os itens em negrito so os que deveremos alterar de acordo com o procedimento que ser executado. Onde est o valor_a_ser_comparado ser indicada a varivel que deseja comparar o valor ou ento a condio que deseja comparar o valor resultante da condio. Onde est o valor1 e o valor2 sero indicados os valores que sero comparados. As instrues a serem executadas sero as que indicam que a condio verdadeira. Exemplo: se o valor_a_ser_comparado igual ao valor1, ento a instruo que ser executada a instruo abaixo do case valor1. Caso nenhum case possua o valor do valor a ser comparado, a instruo a ser executada ser a instruo que est abaixo do Default. O comando Default semelhante ao Else na estrutura do If. Para compreendermos melhor o funcionamento do switch, vamos executar o exemplo a seguir:
82
<HEAD> <TITLE>Exemplo 23</TITLE> </HEAD> <BODY> <? // testando o switch $numero = 10;
// utilizando o switch com varivel switch($numero){ case 0: print O valor da varivel 0; break; case 5: print O valor da varivel 5; break; case 10: print O valor da varivel 10; break; default: print O valor da varivel diferente de 0,5 e 10; break; } print <br><br>;
// utilizando o switch com condio switch($numero/2){ case 0: print A diviso varivel por 2 0; break; case 5:
83
print A diviso varivel por 2 5; break; default: print A diviso varivel por 2 diferente de 0 e 5; break; } ?> </BODY> </HTML>
3 ESTRUTURAS DE REPETIO
As estruturas de repetio so muito utilizadas quando precisamos executar um bloco de comandos vrias vezes at que uma dada condio que com o valor falso. Existem trs tipos de estruturas de repetio: While, Do...While e For. Todas possuem a mesma funcionalidade, repetir as instrues do bloco de comandos at que uma dada condio que com o valor falso, porm as trs fazem a validao da condio de forma diferente. Vamos analisar cada estrutura de repetio separadamente para compreender melhor as diferenas entre elas.
3.1 While
While(condio) Instruo;
84
Tal qual o If, a condio entre os parnteses do while devem possuir um valor verdadeiro para que as instrues sejam executadas. Dessa forma, somente se o resultado da condio for verdadeiro que as instrues sero executadas. Para utilizar uma estrutura de repetio, importante que, em algum momento, o valor da condio testado se torne falso, caso contrrio, a aplicao car em eterno loop, ou seja, estar executando as instrues eternamente. Isso acontece porque as instrues somente sero executadas quando o valor da condio for verdadeiro. Se a condio permanecer eternamente com o valor verdadeiro a aplicao estar executando as instrues innitamente. Essa caracterstica comum para todas as estruturas de repetio. No caso especco do while, a condio testada no incio da instruo while e, em seguida, feita a execuo das instrues. Se a condio permanecer com o valor verdadeiro, as instrues sero executadas novamente e assim sucessivamente, at que o valor da condio se torne falso. Veja no exemplo abaixo a funcionalidade da estrutura while:
Pgina: exemplo24.php <HTML> <HEAD> <TITLE>Exemplo 24</TITLE> </HEAD> <BODY> <? // testando o while $numero = 1;
85
// utilizando while para testar se o valor da varivel $numero menor que 10 while($numero<10){ print O valor da varivel numero .$numero . <br>;
// utilizando o operador de incremento para aumentar o valor ++$numero; // imprime o novo valor da varivel $numero print O valor da varivel numero agora .$numero . <BR>;
// verica se o valor da varivel 10 e imprime o m do loop if($numero==10) print Fim do Loop; } ?> </BODY> </HTML>
A estrutura de repetio do...while semelhante estrutura while. A nica diferena entre elas que o while testa a condio no nicio do comando e a estrutura do...while testa a condio no nal do comando. Isso signica que, se a condio estiver com o valor falso, utilizando do...while as instrues sero executadas uma vez. Utilizando while, se a condio estiver com o valor falso, as instrues no sero executadas. Veja a sintaxe do do...while:
86
Diferente das demais estruturas de controle, o do...while obriga a utilizao do bloco de comando em sua sintaxe. Vamos ao exemplo utilizando a estrutura do...while:
Pgina: exemplo25.php <HTML> <HEAD> <TITLE>Exemplo 25</TITLE> </HEAD> <BODY> <? // testando o do...while $numero = 10;
// utilizando do...while para testar se o valor da varivel $numero menor que 10 do{ print O valor da varivel numero .$numero . <br>; // utilizando o operador de incremento para aumentar o valor ++$numero;
// imprime o novo valor da varivel $numero print O valor da varivel numero agora .$numero . <BR>;
87
// verica se o valor da varivel maior ou igual 10 e imprime o m do loop if($numero>=10) print Fim do Loop; }while($numero<10); ?> </BODY> </HTML>
3.3 For
A estrutura de repetio For possui a mesma funo que o While e o Do...While, porm sua estrutura e sintaxe so bem diferentes. O For tambm uma condio e executa as instrues do bloco de comando, caso o valor da condio seja verdadeiro. Porm no For, a condio baseada em uma varivel contadora, o que o torna muito til quando temos uma lista de valores para ser mostrado ou trabalhado e temos o conhecimento do incio e m dessa lista. imprescindvel que saibamos o incio e o m da lista, pois estes dados so utilizados na sintaxe do for. Vamos analisar a sintaxe do for:
88
Entre as vrias utilidades que a estrutura For nos possibilita, a principal a facilidade para trabalhar com variveis do tipo array. Como j vimos no captulo sobre os tipos de dados, um array uma varivel com vrias posies para armazenamento de valores. Sempre sabemos a quantidade de posies que o array possui, portanto temos as informaes de tamanho dessa lista de variveis. No exemplo abaixo, iremos compreender melhor a utilizao do For para mostrar os valores das posies de um Array:
Pgina: exemplo26.php <HTML> <HEAD> <TITLE>Exemplo 26</TITLE> </HEAD> <BODY> <? // testando o for $arrayNomes[0] = Joo; $arrayNomes[1] = Jos; $arrayNomes[2] = Maria; $arrayNomes[3] = Felisberto;
// utilizando o for para mostrar os valores do $arrayNomes for($contador=0;$contador<=3;$contador++){ print $arrayNomes[$contador] . <br>; } ?> </BODY> </HTML>
89
As estruturas de quebra de uxo so geralmente utilizadas para dar suporte s outras estruturas de controle. So utilizadas para quebrar o uxo de um procedimento, parar a execuo de uma instruo que est dentro de um loop, por exemplo, e dar continuidade nas instrues seguintes. Existem dois tipos de estruturas de quebra de uxo: Break e Continue. A seguir vamos analisar o comportamento dessas duas estruturas.
4.1 Break
A estrutura de controle break pode ser utilizada como suporte pelas estruturas de repetio: While, Do...While e For e tambm na estrutura de seleo: Switch. Quando o interpretador PHP encontra o Break dentro de uma estrutura, imediatamente ele pra a execuo das instrues e segue para as demais instrues denidas. Como j vimos no exemplo do Switch, o Break serve para parar as comparaes de valores de uma varivel ou condio. Com as estruturas de repetio acontece a mesma ao. A instruo seguinte ao break no executada e o uxo de instrues aps a repetio executado. O exemplo a seguir queremos imprimir na tela somente os nmeros mltiplos de 2. Os nmeros que no so mltiplos de 2 no sero impressos na tela.
90
// testando a quebra de uxo com Break // utilizando o for para mostrar os nmeros mltiplos de 2 for($numero=0;$numero<=10;$numero++){ if( ($numero%2) == 0 ) { print 2<br>; break; print Mensagem aps o Break<BR>; } } ?> </BODY> </HTML> $numero . mltiplo de
Ao executarmos o exemplo, apenas uma linha foi mostrada, a linha do nmero 0. Porque isto aconteceu? Porque, aps a impresso da mensagem na tela, o interpretador encontrou a estrutura de quebra de uxo Break. Quando o interpretador encontra o Break, pra imediatamente de executar as instrues da estrutura onde o Break se encontra e passa a executar as instrues que esto na seqncia dessa estrutura. A seguir analisaremos a estrutura de quebra de uxo Continue e utilizaremos esse mesmo exemplo para analisar a diferena entre as duas estruturas.
4.2 Continue
A estrutura de controle Continue tambm d suporte s estruturas de controle de repetio. A diferena entre o Break e o Continue: em que o Continue pra a execuo da estrutura de repetio no momento o interpretador encontra o Continue, porm ao invs de sair da estrutura de repetio, a execuo direcionada para o incio da estrutura. Utilizando o for como exemplo, a execuo direcionada para a primeira linha do For onde testada a condio da varivel contadora.
91
Vamos utilizar o mesmo exemplo do Break, alterando-o para Continue e vericar a diferena entre eles.
Pgina: exemplo28.php <HTML> <HEAD> <TITLE>Exemplo 28</TITLE> </HEAD> <BODY> <? // testando a quebra de uxo com Continue // utilizando o for para mostrar os nmeros mltiplos de 2 for($numero=0;$numero<=10;$numero++){ if( ($numero%2) == 0 ) { print 2<br>; continue; print Mensagem aps o Continue<BR>; } } ?> </BODY> </HTML> $numero . mltiplo de
Aps executarmos o exemplo novamente, trocando o break pelo continue, podemos observar que os nmeros mltiplos de 2 foram corretamente impressos na tela. Porm a mensagem que ca abaixo do continue, assim como quando utilizamos o break, nunca ser executada.
92
Sntese
Nesta aula estudamos: As estruturas de controle disponveis na linguagem PHP; Como e quando podemos utilizar as estruturas de controle nas aplicaes; Desenvolvemos testes para validar a funcionalidade das estruturas de controle.
Exerccios propostos
1) As estruturas de controle disponveis no PHP so ( permitida mltipla escolha): a. Repetio b. Atribuio c. Seleo d. Quebra de Fluxo
2) A estrutura de controle If uma estrutura do tipo (apenas uma alternativa est correta): a. Condio b. Seleo c. Atribuio d. Repetio
3) A estrutura de controle Switch se assemelha a outra estrutura de controle. Qual a estrutura? a. For b. If c. Break d. While
93
4) A estrutura de repetio que testa o valor da condio no nal : a. While b. For c. Do ... While d. Switch
5) As estruturas de quebra de uxo so utilizadas para ( permitida mltipla escolha): a. Finalizar uma instruo b. Dar suporte s outras estruturas de controle c. Alterar o uxo das estruturas de repetio d. Interromper a execuo da pgina
94
Aula 7
CLASSES E OBJETOS
Caro aluno(a)! Nesta aula voc estudar sobre programao orientada a objetos na linguagem PHP. Revisaremos os conceitos bsicos da Orientao a Objetos; vericaremos a aplicao desses conceitos na linguagem PHP e, ao nal, construiremos alguns exemplos utilizando a programao orientada a objetos. O contedo visto nesta aula ser bastante aplicado no nosso estudo de caso. Bons Estudos!
Objetivos da Aula
Ao nal desta aula, voc dever ser capaz de: Identicar os conceitos bsicos de Orientao a Objetos; Identicar a sintaxe bsica para trabalhar com Orientao a Objetos em PHP; Testar exemplos de programao Orientada a Objetos.
Contedos da Aula
Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Revisando os conceitos bsicos da Orientao a Objetos; Trabalhando com Classes e Objetos; Exerccios Propostos.
95
O foco do nosso aprendizado neste curso conhecer a linguagem PHP e as caractersticas principais para desenvolvermos aplicaes para Internet. O tema Orientao a Objetos, que vericaremos neste captulo, abordar alguns conceitos bsicos da Orientao a Objetos e tambm demonstrar como podemos, por meio da linguagem PHP, aplicar seus conceitos no desenvolvimento de aplicaes. Esses conceitos sero sucientes para compreendermos como a linguagem PHP implementa a programao orientada a objetos.
Na denio bsica da orientao a objetos, uma classe pode ser denida como a estrutura que cria novos objetos. Isso signica que todos os objetos utilizados em um sistema so criados por meio da estrutura das classes. O que so os objetos e para que servem? Qual a vantagem da utilizao dos objetos em uma aplicao? Vamos responder essas questes em etapas. Para compreendermos o que um objeto, vamos relembrar o conceito de varivel: utilizada em uma aplicao para armazenar um valor, temporariamente, em memria, durante a execuo de uma aplicao. Essa varivel poder ter o seu valor alterado, porm isto varia de acordo com os procedimentos denidos na aplicao. Vimos que podemos utilizar variveis do tipo array para armazenar mais de um valor em memria. Criamos um array com algumas posies e atribumos valores nessas posies para executar diversos procedimentos durante a execuo da aplicao. Da mesma forma, os objetos tambm sero armazenados em memria, porm os objetos possuem caractersticas diferentes. Vamos imaginar que estamos desenvolvendo um sistema acadmico onde h a manuteno do cadastro de alunos. Por meio dessa manuteno possvel: cadastrar novos alunos, alterar cadastros de alunos existentes, apagar e visualizar o cadastro completo do aluno. Por meio da funcionalidade: Visualizar Cadastro Completo do Aluno ser
96
visualizar todos os dados do cadastro do aluno. Nessa tela sero mostrados os seguintes dados: Matrcula, Nome, Endereo, Telefone do Aluno. Se quisermos trabalhar com os dados de um Aluno nessa tela, permitir a alterao dos dados, por exemplo, teramos que armazenar todos os dados em variveis. Porm essas variveis e seus valores estariam armazenados na memria em locais diferentes, ou seja, no estariam agrupadas em um nico local para acesso. Isso poderia aumentar o tempo na busca pelos dados das variveis em memria, principalmente quando existirem muitos campos no cadastro de Alunos. Esse problema poderia ser solucionado se todos os dados estivessem armazenados agrupados na memria. Quando utilizamos objetos para esses casos, conseguimos agrupar as variveis em um nico local, permitindo rpido acesso ao dado armazenado em memria. No exemplo do Aluno, utilizando o conceito de objetos, criaramos um objeto Aluno, que seria armazenado em memria e, dentro desse objeto, seriam agrupados e armazenados os valores de suas variveis. Em orientao a objetos, as variveis agrupadas dos objetos so chamadas de atributos. Assim, o objeto Aluno teria os seguintes atributos: Matrcula, Nome, Endereo e Telefone, que estariam agrupados em um nico local em memria, facilitando o acesso aos dados armazenados e tambm a manipulao desses dados. A vantagem, nesse caso, permitir o agrupamento dos dados do Aluno em um nico local, fazendo grande diferena no desempenho de uma aplicao. Alm disso, utilizar objetos nos permite ainda outro recurso, a possibilidade de denir algumas funcionalidades especcas para cada objeto. No exemplo do objeto Aluno, denimos como atributos desse objeto: Matrcula, Nome, Endereo e Telefone. Os valores dos atributos sero os dados do Aluno armazenados no sistema e, para cada registro de Aluno no sistema existir um objeto Aluno. Como os atributos esto agrupados em um nico local, possvel denir funcionalidades para o tratamento dos dados destes atributos. Analisando novamente as funcionalidades da manuteno do cadastro de Alunos, h uma funcionalidade que permite a alterao de qualquer um dos registros de Alunos existentes no sistema. Como permitida a alterao de qualquer registro, identicamos que essa funcionalidade igual para todos os objetos Aluno, certo? O sistema tem que permitir que todos os objetos Aluno possam ter os dados de seus
97
atributos alterados. Vamos analisar outra funcionalidade, a que permite apagar os dados dos alunos. Essa funcionalidade tambm permitir apagar qualquer registro de aluno, salvo algumas restries que podem ser denidas na aplicao. Logo, a funcionalidade remover registro de aluno tambm comum para todos os objetos Aluno. Aps essa anlise, podemos identicar os seguintes itens: 1. Todos os objetos Aluno tero os atributos: Matrcula, Nome, Endereo e Telefone, dados que so comuns entre todos os registros de alunos do sistema 2. Todos os objetos Aluno podero ter as funcionalidades: Alterar Dados do Aluno, Remover Dados do Aluno que tambm so funcionalidades comuns para todos os registros de alunos do sistema
Ento, alm de permitir armazenar os dados de seus atributos em nico local para rpido acesso, um objeto tambm permite a denio de funcionalidades para o tratamento dos valores dos seus atributos. Essa uma das principais vantagens da utilizao de objetos em aplicaes: manter os atributos e funcionalidades de uma informao, no nosso exemplo a informao Aluno, agrupados em uma nica estrutura: o objeto. Conhecendo o que um objeto e quais as vantagens na sua utilizao, vamos relembrar a denio da classe: pode ser denida como uma estrutura que cria objetos. por meio da classe que vamos conseguir criar objetos em nossas aplicaes. A classe ento possuir a estrutura do objeto que vai criar. Vamos utilizar o exemplo do objeto Aluno para vericar o formato de uma classe:
98
Funcionalidades: Cadastra Aluno Altera dados do Aluno Apaga dados do Aluno Retorna dados do Aluno
Analisando o formato da classe aluno, vericamos que foram denidos os atributos utilizados pelo objeto Aluno e tambm suas funcionalidades. A funo da classe ter a estrutura nal de como o objeto dever ser criado na memria. Assim, a classe deve ter a relao de todos os atributos e funcionalidades que o objeto vai ter depois de criado. Dessa forma, quando precisarmos criar um objeto Aluno, sempre iremos chamar a classe Aluno para saber qual a estrutura do Aluno que deve ser criada. Resumindo, podemos denir classe e objeto da seguinte forma: Classe o formato da estrutura que um objeto vai possuir. Sua funo criar objetos baseados nesse formato. Objetos so criados por meio de uma classe e permitem agrupar dados de atributos e funcionalidades de uma informao. Os objetos iro assumir o formato de estrutura denido na classe que o criou.
Uma classe composta dos seguintes itens: Atributos Mtodo Construtor (parmetros do mtodo) Mtodo Destrutor (parmetros do mtodo) Mtodos de Funcionalidades (parmetros do mtodo)
No tpico anterior, vimos que os atributos so as posies em memria dos objetos que armazenam os dados. Os atributos de uma classe devem ser denidos de acordo com os dados dos objetos que desejamos armazenar e/ou manipular. Quando denimos a estrutura de uma classe, podemos incluir um mtodo construtor. O mtodo construtor sempre ser executado toda vez que a classe for
99
utilizada para criar um novo objeto. Uma classe pode ter mais de um mtodo construtor, mas para isso dever ser aplicado o conceito de sobrecarga de mtodos dos conceitos da Orientao a Objetos.
Fique sabendo A sobrecarga de mtodos um recurso da Orientao a Objetos que permite a criao de um mtodo com o nome de um outro j existente, porm com parmetros diferentes quantidade de parmetros que o mtodo ir receber e/ou tipo de dados desses parmetros.
O mtodo destrutor, por sua vez, sempre executado quando um objeto apagado da memria. Esta ao acontece quando a aplicao ou um procedimento especco da aplicao executado e a utilizao do objeto em memria no mais necessria. Para evitar que os objetos quem em excesso na memria objetos que no sero mais utilizados pela aplicao no procedimento so destrudos e removidos da memria. Assim, quando a ao executada, o mtodo destrutor da classe executado. Os mtodos de funcionalidades de uma classe so aqueles que possuem as funcionalidades de um objeto. Para cada funcionalidade do objeto, teremos um mtodo de funcionalidade denido dentro da classe. A ao que o mtodo ir executar tambm ser denida dentro da classe, pois a ao da funcionalidade j estar completa e disponvel para ser utilizada pelo objeto, assim que o objeto for criado. Todos os mtodos podem receber parmetros da aplicao/procedimento que o chamou. Os parmetros so opcionais e podem ser utilizados para auxiliar na funo que o mtodo ir desempenhar. Os parmetros geralmente so variveis que a aplicao/procedimento utiliza para o auxlio da execuo de alguma funo. Vamos considerar, por exemplo, que temos uma classe que cria objetos e realiza clculos matemticos. Nessa classe h o mtodo: soma que recebe dois nmeros como parmetro e retorna a soma desses dois nmeros. Nesse caso, os nmeros foram passados por parmetro para auxiliar na execuo da funo do mtodo: realizar a soma dos nmeros recebidos por parmetro. No prximo tpico, vericaremos qual a sintaxe para a denio das classes
100
class NomeDaClasse{
Observemos que existem alguns itens entre colchetes, so os modicadores e os parmetros, representados entre colchetes, pois a denio deles opcional. Isso signica que no necessrio informar estes itens, quando denimos uma classe. Utilizamos parmetros nos mtodos somente quando este precisa realizar alguma funo que depende do valor de uma varivel externa, caso contrrio, a passagem de parmetros para o mtodo descartada. Os modicadores indicados na sintaxe da classe so os comandos que denem a visibilidade dos itens da classe e, conseqentemente, do objeto criado por meio dela. A visibilidade identicar como os atributos e mtodos sero utilizados por toda a aplicao. H trs tipos de visibilidade:
101
1. Public deixa os atributos/mtodos pblicos para toda a estrutura da aplicao. 2. Protected permite que somente algumas pginas e objetos do sistema tenham acesso aos atributos e mtodos da classe, que cam protegidos e podero ser acessados somente por pginas e objetos que fazem parte do mesmo pacote mesmo caminho fsico onde se encontra o arquivo da classe. 3. Private tornar os atributos/mtodos privados. Isso signica que somente a prpria classe/objeto poder acessar e manipular os atributos e mtodos denidos como privados.
Geralmente, os atributos de uma classe so denidos como privados utilizam o modicador private no incio da declarao - porque, segundo o conceito de encapsulamento da orientao a objetos, somente o prprio objeto poder manipular seus atributos, mantendo a integridade dos dados dos objetos e evitando que procedimentos alheios ao objeto prejudiquem os dados armazenados. Vamos, agora, criar nossa primeira classe em PHP, utilizando o exemplo a seguir.
Pgina: class.operacao.php <? // declara a classe // o objeto que for criado por meio desta classe assumir a visibilidade e nome // da classe class Operacao{
// declara o mtodo adio // o mtodo recebe dois nmeros para executar o clculo e retornar o // resultado
102
} ?>
Podemos executar o arquivo da classe no VertrigoServ para validar se no h erro, porm no ser mostrada nenhuma mensagem na tela, porque criamos apenas o formato da classe, ou seja, a estrutura que um objeto ir possuir. Para testarmos o funcionamento dessa classe, vamos criar outro arquivo de exemplo que utilizar a estrutura da classe para criar objetos: Operacao. Quando utilizamos uma classe para criar um objeto, dizemos que instanciamos um novo objeto. Todos os objetos so instanciados por meio de uma classe j denida. Esse tambm um conceito da Orientao a Objetos. Vamos agora criar um novo arquivo de exemplo para testarmos o funcionamento da classe: Operacao. Nesse arquivo vamos disponibilizar um formulrio HTML com dois campos para que possamos informar dois nmeros. Depois iremos submeter os valores dos campos para esse mesmo arquivo vamos utilizar a funo que verica se existe uma varivel setada, nesse caso, as duas variveis que sero enviadas pelo navegador e instanciar um objeto Operacao para utilizar o mtodo: adicao desse objeto.
Pgina: exemplo29_form.php <HTML> <HEAD> <TITLE>Exemplo 29</TITLE> </HEAD> <BODY> <!-Este um comentrio em HTML!
103
Quando queremos que o formulrio envie as variveis para a mesma pgina, no especicamos o atributo: action do comando form --> <form name=form1 method=post>
Nmero 1: <input type=text name=numero1><br> Nmero 2: <input type=text name=numero2><br> <input type=submit name=btnEnviar value=Calcular Soma> </form>
//cria novas variveis com base nas variveis de navegador $num1 = $_POST[numero1]; $num2 = $_POST[numero2];
// inclui o arquivo que possui a estrutura da classe para permitir a // criao do objeto require_once(class.operacao.php);
104
objeto que possui a estrutura // da classe operao // vamos ento chamar o mtodo adicao e obter o resultado da soma e mostrar // o resultado na tela print $objOperacao->adicao($num1,$num2) . <br>;
Ao analisarmos o cdigo fonte do exemplo29.php, podemos identicar trs comandos que ainda no foram utilizados: 1. require_once(arquivo) esse comando permite incluir um arquivo php dentro de outro arquivo. Permite estruturarmos e organizarmos melhor os arquivos da aplicao. Existem outros dois comandos semelhantes ao require_once(): include() e require(). 2. new NomeClasse() permitir a criao de um objeto com base na estrutura da classe identicada. 3. -> - utilizado somente pelos objetos para chamar e executar as instrues de um mtodo. As demais instrues utilizadas no exemplo29.php j foram vistas nos captulos anteriores. Ao executarmos o exemplo29.php no VertrigoServ, ser mostrado o formulrio HTML com dois campos de texto para preenchimento. Aps informarmos os nmeros e clicarmos no boto: Calcular Soma, as validaes sero feitas, o objeto Operacao
105
ser criado e o mtodo: adicao executado. Como o mtodo adicao retorna o resultado, podemos imprimir o resultado na tela. Ao nal, como no iremos mais utilizar o objeto: Operao, podemos destru-lo, removendo-o da memria.
Sntese
Nesta aula zemos uma reviso sobre os conceitos bsicos da Orientao a Objetos. Estudamos a sintaxe bsica da programao orientada a objetos em PHP e analisamos alguns exemplos da aplicao da programao orientada a objetos em PHP.
Exerccios propostos
1) A diferena entre uma classe e um objeto (apenas uma alternativa est correta): a. O objeto armazenado em memria e a classe no b. A classe possui a estrutura de um objeto c. O objeto possui a estrutura de uma classe d. A classe armazena variveis na memria
2) A sintaxe correta para criar um objeto (apenas uma alternativa est correta): a. $objeto = TipoObjeto(); b. objeto = new TipoObjeto(); c. objeto = TipoObjeto() d. $objeto = new TipoObjeto();
3) Exerccio prtico: Desenvolva os mtodos: subtrao, multiplicao e diviso para a classe: class.operacao.php e altere o formulrio do exemplo29.php para permitir que o usurio selecione a operao que deseja realizar.
106
Aula 8
CONTROLE DE SESSO
Caro aluno(a)! Nesta oitava aula voc estudar sobre o controle de sesso em PHP. Vericaremos o que uma sesso e como podemos utiliz-la em aplicaes para Internet. O controle de sesso muito utilizado, principalmente por aplicaes que possuem restrio de acesso de usurios. Bons Estudos!
Objetivos da Aula
Ao nal desta aula, voc dever ser capaz de: Identicar como o funcionamento das sesses; Testar o controle de sesso; Utilizar o controle de sesso em suas aplicaes.
Contedos da Aula
Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Introduo ao controle de sesso; Testando o controle de sesso em PHP; Exerccios propostos.
107
No primeiro captulo deste livro-texto, vimos como utilizar a arquitetura clienteservidor quando acessamos aplicaes na Internet. Assim, todas as aplicaes desenvolvidas para Internet estaro instaladas em um servidor que disponibilizar a aplicao aos usurios, por meio da conexo entre a mquina cliente e o servidor. Quando o usurio abre o navegador de Internet e faz a primeira requisio de acesso aplicao no servidor, criada uma sesso de conexo entre a mquina cliente e o servidor, mantida pela prpria mquina cliente at a nalizao do acesso aplicao. A sesso ser encerrada somente quando o usurio fechar a aplicao ou por algum imprevisto na conexo cliente-servidor. O controle de sesso muito utilizado por aplicaes que possuem acesso restrito. Utilizaremos alguns exemplos que demonstram esse tipo de recurso. No captulo 4 deste livro-texto Trabalhando com Variveis e Constantes tivemos uma pequena introduo s variveis de sesso. Quando uma conexo cliente-servidor estabelecida, a sesso do cliente criada. Aps a criao da sesso, possvel utiliz-la para criar variveis. A sesso uma identicao da conexo do cliente com o servidor e todas as variveis de sesso criadas estaro automaticamente relacionadas com essa que ser mantida pela mquina cliente. Caso seja encerrada, todas as variveis relacionadas com a sesso tambm sero encerradas. Dessa forma, quando trabalhamos com variveis de sesso necessrio sempre vericar se ela est ativa e depois, se a varivel de sesso existe. A sintaxe para criao de uma varivel de sesso : $_SESSION[nome_da_variavel] = valor_da_variavel A varivel de sesso, assim como as outras, tambm pode receber qualquer valor, pois o interpretador PHP utilizar a tipagem automtica para atribuir o tipo de dado varivel. Para utilizarmos variveis de sesso dentro de uma aplicao, precisamos fazer uso das seguintes funes do PHP: session_start() = inicia a sesso que permitir a manipulao de variveis de sesso. Funo sempre utilizada quando houver procedimentos com variveis
108
de sesso. session_is_registered(nome_da_variavel) - verica se a varivel de sesso existe na sesso. Essa funo ir retornar um valor booleano - verdadeiro ou falso. session_destroy() = naliza todas as variveis de sesso registradas. Se, por algum motivo, desejarmos encerrar uma nica varivel de sesso, deveremos utilizar a funo unset(nome_da_variavel), pois a funo session_destroy(), naliza todas as variveis mantidas na sesso.
Para testarmos o controle de sesso em PHP, utilizaremos trs arquivos de exemplo: exemplo30.php, que possuir um formulrio HTML de autenticao de usurios; o exemplo31.php, que far a validao dos dados informados no formulrio HTML, criar uma varivel de sesso e redirecionar para o exemplo32.php. O exemplo32. php estar validando a criao da varivel de sesso e mostrando uma mensagem na tela.
Pgina: exemplo30_form.php <HTML> <HEAD> <TITLE>Exemplo 30</TITLE> </HEAD> <BODY> <form name=form1 action=exemplo31.php method=post>
Login: <input type=text name=login><br> Senha: <input type=password name=senha><br> <input type=submit name=btnEnviar value=Autenticar Usurio> </form> </BODY> </HTML>
109
if(isset($_POST[login])){
//verica se o login e senha informados esto corretos if($login == user && $senha == 1234){
Pgina: exemplo32_form.php <? //inicia a sesso session_start(); ?> <HTML> <HEAD> <TITLE>Exemplo 32</TITLE> </HEAD> <BODY>
110
<? //verica se a varivel de sesso foi criada if(session_is_registered(user)){ print Sesso criada com sucesso.; } else { print A sesso no foi criada, login e senha incorretos; } //destroi a sesso session_destroy(); ?> <br><br> <a href =exemplo30.php>Voltar para tela de Autenticao</ a> </BODY> </HTML>
Teste os exemplos informando o login e senha corretos, denido no exemplo31. php e tambm incorretos para validar a criao da varivel de sesso. Uma sesso pode ter N variveis de sesso, porm, por medida de segurana, no aconselhvel manter muitos dados em sesso. Antes de nalizarmos esse captulo, vamos analisar uma nova instruo utilizada nos exemplos acima: header(location:exemplo32.php); O comando header pode ser utilizado para vrios procedimentos. No exemplo acima, utilizamos o comando para que, ao nal da execuo do exemplo31.php, o usurio fosse redirecionado para o exemplo32.php. O item location: o subcomando do header que permite esse tipo de recurso. Porm somente ser possvel utilizar este redirecionamento quando nenhum tipo de impresso foi feito na tela. Se, por acaso, no for feita nenhuma impresso na tela, mas houver algum comando HTML como o <HTML></HTML> ou outro comando HTML qualquer, o recurso no vai funcionar e ser retornado um erro. Portanto, utilize esse recurso somente quando houver
111
certeza de que no ser impresso nada na tela do usurio. Outra dica importante com relao funo: session_start(). Se voc vericar o exemplo32.php, a funo est logo no topo da pgina, antes mesmo do comando HTML: <HTML></HTML>. O session_start() tambm tem o mesmo tipo de requisito que o comando header, ou seja, deve ser utilizado antes de qualquer impresso na tela, mesmo que sejam apenas comandos HTMLs.
Sntese
Nesta aula estudamos como funciona o Controle de Sesso; introduzimos alguns contedos sobre Controle de Sesso em PHP e analisamos exemplos de testes para vericar como funcionam as sesses em PHP.
Exerccios propostos
1) A sesso pode ser denida como (apenas uma alternativa correta): a. Uma varivel b. Uma constante c. Uma identicao de conexo d. Uma estrutura de controle
2) Quando utilizamos variveis de sesso, conseqentemente estas variveis estaro armazenadas: a. No banco de dados b. No HD disco fsico c. Na memria d. Na sesso da mquina cliente
112
3) A sesso criada quando: a. Um usurio abre o navegador b. Um usurio faz uma autenticao correta em um sistema c. Uma mquina cliente faz uma requisio ao servidor d. Uma mquina cliente efetiva uma conexo de acesso com o servidor
4) Quando precisamos realizar operaes com variveis de sesso devemos sempre utilizar a funo: a. Session_is_registered() b. Session_destroy() c. $_SESSION[] d. Session_start()
5) A funo que encerra todas as variveis de sesso mantidas na sesso da mquina cliente a: a. Session_is_registered() b. Session_destroy() c. $_SESSION[] d. Session_start()
113
Aula 9
Objetivos da Aula
Ao nal desta aula, voc dever ser capaz de: Identicar quais so as funes necessrias para trabalhar com o MySQL; Identicar os passos para fazer uma conexo com o MySQL; Testar a integrao do PHP com o MySQL.
Contedos da Aula
Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Introduo; Conexo com o MySQL; Executando comandos de manipulao de dados; Executando comandos de seleo de dados; Exerccios Propostos.
114
1 INTRODUO
Grande parte das aplicaes disponveis na Internet, atualmente, possuem contedo dinmico, ou seja, possuem o contedo armazenado em um banco de dados. Manter o contedo atualizado desse tipo de aplicao muito mais fcil e rpido do que manter o contedo de aplicaes estticas, desenvolvidas apenas com HTML, pois no necessrio alterar o leaiute da pgina a cada alterao de contedo. Basta que esteja denido onde sero publicados os contedos armazenados em banco de dados e, conforme so atualizados sero disponibilizados automaticamente no local denido. Para que essa facilidade na manuteno de contedos se torne real, necessrio utilizar uma linguagem de programao de aplicaes para Internet que tenha suporte e integrao a um banco de dados. A linguagem PHP, atualmente na verso 5, possui suporte e integrao em grande parte dos bancos de dados. Alm disso, a combinao: PHP e MySQL tem sido um par perfeito desde o incio da popularidade do PHP. Assim, nesse captulo, estudaremos as formas de integrao que a linguagem PHP disponibiliza para podermos desenvolver aplicaes com contedo dinmico armazenado no banco de dados MySQL. Se voc fez a instalao do VertrigoServ, tambm j tem instalado e congurado em sua mquina a verso 5 do MySQL.
A linguagem PHP disponibiliza vrias funes que permitem a integrao com o banco de dados MySQL. Identicar essas funes no manual do PHP bem simples, pois todas elas iniciam com o termo: mysql. A conexo com o servidor de banco de dados MySQL, em PHP, feita por meio da funo mysql_connect, que tem a seguinte sintaxe:
mysql_connect(nome_servidor[:porta], login_usuario, senha_usuario);
115
que necessria a passagem de trs parmetros: 1. O nome do servidor onde est instalado o MySQL e, caso o MySQL no esteja instalado na porta padro, deve-se informar, aps o nome do servidor, o nmero da porta; 2. O login do usurio que possui acesso ao servidor MySQL e tambm ao banco de dados que se deseja conectar; 3. E a senha do usurio que est conectando no servidor MySQL. A funo de conexo ir retornar um valor inteiro, que o identicador da conexo estabelecida e dever ser armazenado numa varivel para ser utilizado depois na seleo do banco de dados e tambm nos procedimentos de manipulao com o banco de dados. Veja o exemplo de conexo com o banco de dados: $conexao = mysql_connect(localhost, root, vertrigo); Utilizando o exemplo acima, se a conexo for bem sucedida, ou seja, se existir um servidor MySQL chamado: localhost que possua o usurio e a senha fornecida, o identicador da conexo com o servidor car armazenado na varivel $conexo. Aps efetuar com sucesso a conexo com o MySQL, ser necessrio selecionar o banco de dados que possui os dados da aplicao. Essa seleo feita por meio da funo int mysql_db_query, que possui a seguinte sintaxe: mysql_db_query(nome_banco, identicador_conexao); A funo de seleo do banco de dados que ir retornar 0, se no encontrar o banco de dados no servidor especicado pelo identicador da conexo, e 1, em caso de sucesso. Veja o exemplo de seleo do banco de dados revenda que ser utilizado no nosso estudo de caso: mysql_select_db(revenda, $conexao); Caso a seleo do banco de dados seja feita com sucesso, ser possvel realizar qualquer manipulao nos dados desse banco de dados, desde que o usurio utilizado para a conexo com o servidor tenha permisso para realizar tais operaes.
116
linguagem PHP, necessrio que a conexo com o MySQL e a seleo do banco de dados j tenha sido efetuada com sucesso. Caso contrrio, a tentativa de manipulao ir retornar um erro. Para manipular dados em um banco de dados, utilizamos os seguintes comandos SQL: 1. INSERT para inserir registros 2. UPDATE para alterar registros 3. DELETE para excluir registros No entraremos em detalhes sobre a sintaxe e os padres da linguagem SQL aqui, pois esse conhecimento um pr-requisito para cursar esta disciplina. Os comandos SQL sero executados na linguagem PHP por meio da funo: mysql_query cuja sintaxe : mysql_query(comando_sql, identicador_da_conexao); O retorno da funo ser 0, em caso de falha, e 1, em caso de sucesso. Quando a funo for executada com sucesso, signica que instruo SQL foi executada corretamente pelo servidor MySQL e a manipulao dos dados foi executada com sucesso.
Os comandos de seleo de dados tambm so executados por meio da funo mysql_query. A diferena nesse caso, que a funo ter um valor diferente de 0 e 1. O valor de retorno, nesse caso, um identicador que possui a identicao do resultado da seleo realizada. Para visualizarmos o resultado da seleo, ser necessrio utilizarmos a funo mysql_result, cuja sintaxe :
mysql_result(identicador_resultado, linha_registro, campo_registro);
O identicador do resultado obtido por meio do retorno da funo mysql_query. A linha especica a linha de registro a ser exibida, j que uma query SELECT pode retornar diversas linhas de registros, e campo o identicador do campo a ser exibido. Vejamos um exemplo: $consulta = SELECT nome, email FROM usuario WHERE nome LIKE Joo;
117
$resultado = mysql_query($consulta, $conexao); Print Nome: . mysql_result($resultado,0,nome) . <br> ; Print e-mail: . mysql_result($resultado,0,email) . <br>;
A funo mysql_result no a nica que permite o tratamento do resultado de um comando de seleo. Inclusive, para resultado com muitas linhas de registro, podemos dizer que ela desaconselhvel. Por isso, aconselhvel utilizar outra funo, por exemplo, a funo mysql_fetch_row, que possui a seguinte sintaxe: mysql_fetch_row(identicador_resultado); O retorno dessa funo ser um array de registros. Assim torna-se mais fcil tratar um resultado com vrias linhas, e sem utilizar os nomes dos campos na rotina de tratamento do resultado. Vamos analisar o mesmo exemplo, porm agora utilizando a funo mysql_fetch_row:
$consulta = SELECT nome, email FROM usuario; $resultado = mysql_query($consulta, $conexao); while ($linha = mysql_fetch_row($resultado)) { print Nome: . $linha[0] . <BR>; print e-mail: . $linha[1] . <BR>; }
Nessa aula conhecemos apenas algumas funes bsicas que permitem a integrao do PHP com o banco de dados MySQL, porm existem outras funes que auxiliam nessa integrao. Na prxima aula desenvolveremos um estudo de caso e aplicaremos os conceitos de integrao com o banco de dados MySQL vistos nesse captulo.
118
Sntese
Nesta aula estudamos as principais funes para integrao entre o PHP e o MySQL. Tambm estudamos os procedimentos que devem ser executados para a conexo com o MySQL, alm de termos analisado exemplos de integrao e manipulao dos dados de um banco de dados MySQL.
Exerccios propostos
Para resolver os exerccios seguintes, obrigatria a criao do banco de dados revenda do modelo ER abaixo. Este banco de dados tambm ser utilizado no estudo de caso da prxima aula.
1) Crie um arquivo em PHP que faa a conexo com o banco de dados MySQL, selecione o banco de dados revenda e em seguida, utilize as funes de integrao para executar os seguintes comandos SQL: a. Inserir os seguintes registros na tabela Marcas: i. 1 Citroen ii. 2 Audi
119
iii. 3 Renault b. Selecionar e imprimir todos os registros inseridos na tabela Marcas. c. Alterar a descrio do registro nmero 3 da tabela Marcas para Pegeout. d. Selecionar e imprimir todos os registros inseridos na tabela Marcas depois da alterao.
120
Aula 10
Objetivos da Aula
Ao nal desta aula, voc dever ser capaz de: Consolidar os conhecimentos adquiridos na disciplina; Iniciar o desenvolvimento de uma aplicao de revenda de automveis.
Contedos da Aula
Acompanhe os contedos desta aula. Se voc preferir, assinale-os medida em que for estudando. Caractersticas da Aplicao; Desenvolvendo as Classes de Conexo; Desenvolvendo as Classes de Negcio; Desenvolvendo a interface com usurio.
121
1 CARACTERSTICAS DA APLICAO
A aplicao que iniciaremos nessa aula refere-se ao modelo ER, da pg. , da aula anterior. A aplicao tem como objetivo atender as necessidades de uma revenda de automveis, cuja inteno desenvolver um site na Internet que permita ao usurio selecionar marcas e/ou modelos de automveis e visualizar uma lista de automveis disponveis para venda. Vericaremos quais so os primeiros passos para desenvolver a aplicao, criar as principais classes do sistema, a tela principal e a manuteno dos registros de uma das tabelas na administrao do site. Ao nalizarmos esses itens, voc j ser capaz de dar continuidade na aplicao e desenvolver os demais recursos. Ao nal do captulo, algumas sugestes de funcionalidades sero apresentadas para enriquecer a aplicao da revenda de automveis.
A primeira tarefa que devemos realizar, para desenvolvermos a aplicao da revenda de automveis a criao das classes que permitiro criar os objetos de conexo e acesso aos dados para seleo e manipulao. Criaremos, ento, duas classes: 1. A classe: class.conexaobanco.php, responsvel pela conexo com o MySQL 2. E a classe: class.acessobanco.php, cujos mtodos sero operaes de manipulao e seleo que podem ser executadas no banco de dados. Essas duas classes sero o corao da nossa aplicao, pois todos os objetos do sistema as utilizaro para fazer a conexo e seleo/manipulao dos dados no banco de dados. Vamos ento analisar o cdigo fonte da classe: class.conexaobanco.php:
<?php class ConexaoBanco { //Propriedade Esttica referenciando um tipo da mesma Classe
122
private $server = localhost; private $user = root; private $password = vertrigo; private $conexao;
//Construtor Private - No possvel utilizar new em outras classes private function __construct() {
123
mysql_close($this->conexao); } } ?>
Analisando o cdigo fonte da classe, observamos haver um mtodo construtor, que farr a conexo com o MySQL, por meio dos dados dos atributos privados j selecionados com os dados de conexo com o MySQL. Nessa classe, existe tambm o mtodo destrutor, que fechar a conexo com o banco de dados, quando o objeto for nalizado/destrudo. A funo que fecha a conexo com o banco de dados a mysql_close. Os outros dois mtodos da classe, o getConexao: retorna o identicador da conexo realizada e o getInstancia sempre retornar o mesmo objeto em memria para os demais objetos da aplicao. Esse mtodo foi congurado dessa forma para prevenir o problema de estouro de pool no banco de dados. O problema ocorre quando muitas conexes com o banco de dados so inicializadas e no so nalizadas. Essas conexes que cam abertas iro consumir os recursos do banco at esgotar e isso gerar o famoso estouro de pool. No nosso caso, utilizando o objeto conexaobanco, haver sempre uma nica conexo e, ao nal da aplicao, essa conexo ser devidamente nalizada. Agora vamos analisar o cdigo-fonte da classe: class.acessobanco.php: <?php require(class.conexaobanco.php);
class AcessoBanco{
124
//mtodo que retorna o valor do campo informado no parmetro public $paramWhere){ function getValorCampo($paramCampo, $paramFrom,
$valorCampo = ;
//comando SQL que busca o valor do campo informado $comandoSql = SELECT . $paramCampo . FROM . $paramFrom . WHERE . $paramWhere;
//executa o comando SQL no banco de dados $resultado = mysql_db_query ($this->base, $comandoSql, $this->conexao);
125
//mtodo que seleciona registros no banco de dados public function selectRegistro($paramTabela, $paramCampos, $paramCondicao = , $paramOrdenacao = ){
//comando SQL que seleciona os dados no banco de dados $comandoSql = SELECT . $paramCampos . FROM . $paramTabela;
//executa o comando SQL no banco de dados $resultado = mysql_db_query ($this->base, $comandoSql, $this->conexao);
$i = 0;
$arrayRegistro = array();
//seta o array de Registros com os registros retornados while ($registro = mysql_fetch_array ($resultado)) { $arrayRegistro[$i] = $registro; $i++;
126
return $arrayRegistro;
//mtodo que insere registros no banco de dados e retorna o ltimo id inserido public function insertRegistro($paramTabela, $paramCampos, $paramValores){
$id = 0;
//comando SQL que insere os dados no banco de dados $comandoSql = INSERT INTO . $paramTabela . ( . $paramCampos . ) VALUES( . $paramValores . ) ;
//executa o comando SQL no banco de dados $resultado = mysql_db_query ($this->base, $comandoSql, $this->conexao);
return $id; }
127
//mtodo que altera registros no banco de dados public function updateRegistro($paramTabela, $paramCampos, $paramCondicao){ $resultado = 0;
//comando SQL que altera os dados no banco de dados $comandoSql = UPDATE . $paramTabela . SET . $paramCampos . WHERE . $paramCondicao;
//executa o comando SQL no banco de dados $resultado = mysql_db_query ($this->base, $comandoSql, $this->conexao);
return $resultado;
//mtodo que altera registros no banco de dados public function deleteRegistro($paramTabela, $paramCondicao){
//comando SQL que apaga os dados no banco de dados $comandoSql = DELETE FROM . $paramTabela . WHERE . $paramCondicao;
128
} }
?>
A classe acessobanco a classe responsvel pela seleo do banco de dados e por todo tipo de manipulao e seleo dos dados no banco. Essa classe possui um mtodo para cada tipo de comando SQL, permitindo exibilidade e organizao dos comandos SQL em um nico local. Observando os mtodos criados, identicamos uma palavra que no tinha sido mencionada at o momento, a palavra static, que tambm faz parte do conceito de orientao a objetos e indica que no necessria a criao de um objeto em memria para utilizar os mtodos da classe. Isso signica que no precisamos utilizar o comando new Objeto() para utilizar o mtodo static, basta apenas informar qual a classe que possui o mtodo static e cham-lo. Veja, a seguir, como feita a chamada de um mtodo static de uma classe: NomeDaClasse::NomeDoMetodo(); Nas classes de negcio utilizaremos bastante a chamada de mtodos static.
Criadas as classes de conexo e acesso ao banco, precisaremos desenvolver as classes de negcio aquelas que criaro os objetos no sistema para manipular as informaes ao nal, salvar no banco de dados. Neste livro-texto visualizaremos as classes de negcio que criaro objetos Marcas, porm existem outras classes na aplicao que possuem a mesma estrutura e que sero disponibilizadas para os testes e desenvolvimento dos demais recursos da aplicao. As classes de negcio so divididas em duas: 1. Classe que cria o objeto Bean esse termo muito utilizado em
129
programao orientada a objetos e identica as classes que possuem a estrutura das tabelas denidas no banco de dados. Para cada tabela no banco de dados ser criada uma classe com a estrutura dessa tabela, cujos campos sero os atributos da classe. Para cada atributo dessa classe existiro dois mtodos: um que atribui um valor para o atributo e outro que retorna o valor do atributo. So os chamados mtodos: set e get da orientao a objetos. 2. Classe com a Regra de Negcio do objeto Bean essa classe possuir os mtodos/funcionalidades de negcio disponveis para o objeto Bean correspondente. Essa classe possuir mtodos static, para cham-los, no ser necessria a criao do objeto Regra de Negcio. Vamos analisar o cdigo-fonte das classes Bean e Regra de Negcio, criadas por meio da tabela: Marcas do banco de dados. Classe Bean class.marca.php <?php class Marca{
//mtodos da classe
130
?>
Analisando a classe Bean da tabela: Marcas, identicamos uma estrutura bem simples possui dois atributos e quatro mtodos. Para cada atributo da classe h um mtodo: set, que atribui valor ao atributo, e um mtodo: get, que retorna o valor do atributo. Para todas as tabelas do sistema ser necessrio criar uma classe semelhante, lembrando sempre que os atributos da classe so os campos da tabela em questo. Vamos agora analisar a classe Regra de Negcio da tabela: Marcas.
<?php // incluso do arquivo de classe Marca require_once(class.marca.php); //inclui o arquivo da classe AcessoBanco require_once(class.acessobanco.php);
131
class MarcaRN{
//retorna uma lista de objetos Marca public static function getListaObjeto($paramCondicao = , $paramOrderBy = marca_desc){
//seta os valores para passar por parmetro $tabela = marcas; $campos = marca_cod, marca_desc; $condicao = $paramCondicao;
class MarcaRN{
//retorna uma lista de objetos Marca public static function getListaObjeto($paramCondicao = , $paramOrderBy = marca_desc){
//seta os valores para passar por parmetro $tabela = marcas; $campos = marca_cod, marca_desc;
132
$condicao = $paramCondicao;
return $lista;
//mtodo que recebe um array de registros e retorna um array de objetos private static function geraArrayObjeto($paramLista){
$i = 0; $marcas = array();
$marcas[$i] = $marca;
133
$i++; }
return $marcas;
//seta os valores para passar por parmetro $tabela = marcas; $campos = marca_cod, marca_desc; $condicao = marca_cod = . $paramCod;
$marca = ;
134
return $marca;
//seta os valores para passar por parmetro $tabela = marcas; $campos = marca_desc = . $Objeto->getDesc() . ; $condicao = marca_cod = . $Objeto->getCod();
//altera o objeto
135
//seta os valores para passar por parmetro $tabela = marcas; $campos = marca_cod, marca_desc; $valor = $Objeto->getCod() . , . $Objeto->getDesc() . ;
136
?>
A classe regra de negcio a que permitir a manipulao dos registros da tabela no banco de dados. No caso da classe: MarcaRN, criaremos mtodos especcos para a manipulao dos dados da tabela: Marcas do banco de dados revenda. Analisando o cdigo fonte da classe, identicamos mtodo para cada tipo de manipulao no banco de dados. H dois mtodos de seleo no banco: o getListaObjeto que ir retornar uma lista de objetos Marca, de acordo com a quantidade de registros existente no banco de dados e o getObjeto, que retorna um nico objeto Marca. Esse segundo mtodo utilizado para pegar um registro especco da tabela por meio da chave primria campo que identica o registro no banco de dados. Como estamos programando orientado a objetos e utilizando um banco de dados relacional para armazenar os dados, necessrio fazer um mapeamento objeto - relacional para pegar os registros que esto no banco de dados relacional e transform-los em objetos dentro da aplicao. Assim, o mtodo: geraArrayObjeto o responsvel pela criao da lista de objetos Marcas, com base no resultado da consulta de seleo executada no banco de dados. Os demais mtodos da classe referem-se s operaes de manipulao dos registros no banco de dados. Existe um mtodo para cada operao comando SQL. Nesses mtodos tambm utilizamos o mapeamento objeto relacional, porm nesse momento transformaremos os objetos em memria nos registros do banco de dados. Como todos os mtodos da classe de negcio se referem manipulao e seleo de registros no banco de dados, a classe: acessobanco, criada no tpico anterior, ser a ponte entre o objeto e o banco de dados. Assim, todas as tabelas do banco de dados revenda tero duas classes
137
correspondentes na aplicao: a classe Bean, que possuir a estrutura da tabela, e a Regra de Negcio, com mtodos que permitiro a seleo e manipulao dos registros no banco de dados. Vamos agora criar as classes Bean e Regra de Negcio para as tabelas: Modelos e Automoveis. Verique que as estruturas dessas classes so semelhantes s classes da tabela: Marcas. A nica diferena entre elas, em relao quantidade de atributos o mapeamento objeto relacional, que utilizar dados da tabela a que a classe se refere.
class Modelo{
//mtodos da classe
138
//marca_cod
?>
Classe Regra de Negcio: class.modeloRN.php <?php // inclusoo do arquivo de classe Modelo require_once(class.modelo.php);
139
class ModeloRN{
//retorna uma lista de objetos modelo public static function getListaObjeto($paramCondicao = , $paramOrderBy = mod_desc){
//seta os valores para passar por parmetro $tabela = modelos; $campos = mod_cod, mod_desc, marca_cod; $condicao = $paramCondicao;
return $lista;
140
//mtodo que recebe um array de registros e retorna um array de objetos private static function geraArrayObjeto($paramLista){
$i = 0; $modelos = array();
return $modelos;
141
$modelo = ;
//verica se retornou um resultado if(sizeof($resultado)>0){ $modelo = new modelo(); $modelo->setCod($resultado[0][mod_cod]); $modelo->setDesc($resultado[0][mod_desc]); $modelo->setMarcaCod($resultado[0][marca_ cod]); }
return $modelo;
142
$tabela = modelos; $campos = mod_desc = . $Objeto->getDesc() . .; $campos = marca_cod = . $Objeto->getMarcaCod() . ; $condicao = mod_cod = . $Objeto->getCod();
//seta os valores para passar por parmetro $tabela = modelos; $campos = mod_cod, mod_desc,marca_cod; $valor = $Objeto->getCod() . , . $Objeto->getDesc() . , . $Objeto->getMarcaCod() . ;
//destroi objeto
143
unset($acessoBanco);
//seta os valores para passar por parmetro $tabela = modelos; $condicao = mod_cod = . $Objeto->getCod();
?>
class Automovel{
144
//atributos private $placa; private $mod_cod; private $ano; private $preco; private $cor; private $combustivel; private $km; private $arcondicionado; private $vidroeletrico; private $vidroverde; private $airbag; private $travaeletrica; private $alarme; private $desembacador; private $rodaliga; private $volantehidraulico; private $arquente; private $abs; private $cambioaut; private $cdplayer; private $isulm; private $limpadortraseiro; private $outros; private $vendido;
//mtodo construtor da classe public function Automovel(){ $this->placa = ; $this->mod_cod = 0; $this->ano = 0; $this->preco = 0;
145
$this->cor = ; $this->combustivel = ; $this->km = 0; $this->arcondicionado = 0; $this->vidroeletrico = 0; $this->vidroverde = 0; $this->airbag = 0; $this->travaeletrica = 0; $this->alarme = 0; $this->desembacador = 0; $this->rodaliga = 0; $this->volantehidraulico = 0; $this->arquente = 0; $this->abs = 0; $this->cambioaut = 0; $this->cdplayer = 0; $this->isulm = 0; $this->limpadortraseiro = 0; $this->outros = 0; $this->vendido = 0; }
//mtodos da classe
146
147
148
149
//volantehidraulico
150
151
152
?>
<?php // inclusoo do arquivo de classe Automovel require_once(class.automovel.php); //inclui o arquivo da classe AcessoBanco require_once(class.acessobanco.php);
class AutomovelRN{
153
//seta os valores para passar por parmetro $tabela = automoveis; $campos = aut_placa,mod_cod,aut_ano,aut_preco,aut_
return $lista;
154
//mtodo que recebe um array de registros e retorna um array de objetos private static function geraArrayObjeto($paramLista){
$i = 0; $automovels = array();
//instancia o objeto $automovel = new automovel(); $automovel->setPlaca($array[aut_placa]); $automovel->setModCod($array[mod_cod]); $automovel->setAno($array[aut_ano]); $automovel->setPreco($array[aut_preco]); $automovel->setCor($array[aut_cor]); $automovel->setCombustivel($array[aut_combustivel]); $automovel->setKm($array[aut_km]); $automovel->setArCondicionado($array[aut_ar condicionado]); $automovel->setVidroEletrico($array[aut_vidroeletrico]); $automovel->setVidroVerde($array[aut_vidrov erde]); $automovel->setAirBag($array[aut_airbag]); $automovel->setTravaEletrica($array[aut_tra vaeletrica]); $automovel->setAlarme($array[aut_alarme]); $automovel>setDesembacador($array[aut_desembacador]); $automovel->setRodaLiga($array[aut_rodaliga]);
155
$automovel->setVolanteHidraulico($array[aut_ volantehidraulico]); $automovel->setArQuente($array[aut_arquente]); $automovel->setAbs($array[aut_abs]); $automovel->setCambioAut($array[aut_cambio aut]); $automovel->setCdPlayer($array[aut_cdplayer]); $automovel->setIsulm($array[aut_isulm]); $automovel->setLimpadorTraseiro($array[aut_ limpadortraseiro]); $automovel->setOutros($array[aut_outros]); $automovel->setVendido($array[aut_vendido]); $automovels[$i] = $automovel; $i++;
return $automovels;
156
$automovel = ;
if(sizeof($resultado)>0){ $automovel = new automovel(); $automovel->setPlaca($resultado[0][aut_ placa]); $automovel->setModCod($resultado[0][mod_cod]); $automovel->setAno($resultado[0][aut_ano]); $automovel->setPreco($resultado[0][aut_ preco]); $automovel->setCor($resultado[0][aut_cor]); $automovel>setCombustivel($resultado[0][aut_combustivel]); $automovel->setKm($resultado[0][aut_km]); $automovel>setArCondicionado($resultado[0][aut_arcondicionado]);
157
$automovel->setVidroEletrico($resultado[0][aut _vidroeletrico]); $automovel->setVidroVerde($resultado[0][aut_ vidroverde]); $automovel->setAirBag($resultado[0][aut_air bag]); $automovel->setTravaEletrica($resultado[0][aut _travaeletrica]); $automovel->setAlarme($resultado[0][aut_ alarme]); $automovel->setDesembacador($resultado[0][aut_ desembacador]); $automovel->setRodaLiga($resultado[0][aut_rodaliga]); $automovel->setVolanteHidraulico($resultado[0][ aut_volantehidraulico]); $automovel->setArQuente($resultado[0][aut_arquente]); $automovel->setAbs($resultado[0][aut_abs]); $automovel->setCambioAut($resultado[0][aut_ cambioaut]); $automovel->setCdPlayer($resultado[0][aut_cdplayer]); $automovel->setIsulm($resultado[0][aut_isu lm]); $automovel->setLimpadorTraseiro($resultado[0][aut_limpadortraseiro]); $automovel->setOutros($resultado[0][aut_out ros]); $automovel->setVendido($resultado[0][aut_vendido]); }
158
return $automovel;
?>
Criadas as classes Bean e Regra de Negcio, podemos desenvolver as pginas PHP que possuiro a interface da aplicao com o usurio. Essas pginas utilizaro as classes Bean e Regra de Negcio para trabalhar com os objetos dentro da aplicao. Desenvolveremos quatro pginas de interface: 1. index.php pgina principal da aplicao que permitir ao usurio selecionar uma Marca, um Modelo relacionado Marca selecionada e vericar a lista de carros relacionadas ao Modelo para consulta. 2. admin/marca_lst.php pgina da administrao que permitir ao administrador da aplicao visualizar todos os registros armazenados na tabela: Marcas do banco de dados. 3. admin/marca_frm.php pgina com o formulrio que permitir o cadastro e alterao dos registros da tabela: Marcas. 4. admin/marca_action.php pgina que ir alterar os dados do objeto de acordo com a ao feita no formulrio: cadastro, alterao ou remoo e chamar a classe Regra de Negcio para efetivar a alterao dos dados do objeto no banco de dados.
159
Pgina: index.php <html> <head> <title>Revenda de Automveis</title> <meta http-equiv=Content-Type content=text/html; charset=iso8859-1> </head>
<body> <? //inclui as classes require_once(classes/class.marcaRN.php); require_once(classes/class.modeloRN.php); require_once(classes/class.automovelRN.php); ?> <form name=form1 method=post> <table width=100% border=0 cellpadding=0 cellspacing=0> <tr> <td width=20% valign=top> <!-- seleo de marcas e modelos --> Marcas: <select form1.submit();> <option tion> <? $marca_cod=0; if(isset($_POST[marca_cod])){ $marca_cod = $_POST[marca_cod]; } value=0>Selecione a Marca</opname=marca_cod onChange=document.
$lista = MarcaRN::getListaObjeto(,);
160
foreach($lista as $oMarca){ ?> <option value=<?=$oMarca->getCod()?> <? ($marca_cod==$oMarca->getCod())?print selected:print ; ?> ><?=$oMarca->getDesc()?></option> <? } ?> </select> <br><br> Modelos: <select name=mod_cod onChange=document.form1. submit();> <option value=0>Selecione o Modelo</option> <? $condicao = ; if(isset($_POST[marca_cod])){ $condicao POST[marca_cod]; } = marca_cod = . $_
161
($mod_cod==$oModelo->getCod())?print
print ; ?> ><?=$oModelo->getDesc()?></option> <? } ?> </select> </td> <td width=5%> </td> <td> <!-- lista de automtveis --> <table width=100% align=center border=1
bordercolor=#000000 cellpadding=3 cellspacing=0> <tr bgcolor=#EAEAEA> <td>Placa</td> <td>Ano</td> <td>Preco</td> </tr> <? $condicao = mod_cod = . $mod_cod; $lista = AutomovelRN::getListaObjeto($condi cao,); foreach($lista as $oAutomovel){ ?> <tr> <td><?=$oAutomovel->getPlaca()?></td> <td><?=$oAutomovel->getAno()?></td> <td><?=$oAutomovel->getPreco()?></td> </tr> <?
162
Pgina: admin/marca_lst.php <? /* Indica que o arquivo no deve car em cache (fora o seu reprocessamento) */
require_once(classes/class.marcaRN.php);
onClick=location.href=marca_frm.php /><br><br> <table width=100% align=center border=1 bordercolor=#000000 cellpadding=3 cellspacing=0> <tr bgcolor=#EAEAEA> <td>Cdigo</td> <td>Descrio</td> <td> </td> </tr> <?
$lista = MarcaRN::getListaObjeto(,);
foreach($lista as $oMarca){
163
php?cod=<?=$oMarca->getCod()?> /></td> </tr> <? }//foreach ?> </table> <? //Libera objetos unset($lista); ?>
// verica se cadastro ou alterao if (isset($_GET[cod])){ // alterao $cod = $_GET[cod]; $oMarca = MarcaRN::getObjeto($cod); } else { // cadastro $cod = 0; $oMarca = new Marca(); }
164
$desc = $oMarca->getDesc();
?> <form method=post name=frm action=marca_action.php> <table width=95% align=center border=0 cellpadding=0 cellspacing=0> <tr> <td width=30% align=right>Cdigo: </ td> <td><input name=cod type=text size=10
maxlength=5 value=<?=$cod?> /></td> </tr> <tr> <td width=30% align=right>Descrio: </ td> <td><input name=desc type=text size=40
maxlength=100 value=<?=$desc?> /></td> </tr> <tr> <td width=30% align=right> </td> <td> </td> </tr> <tr> <td width=30%> </td> <td> <input name=btnSalvar type=Submit value=Salvar> <input name=btnCancelar type=button
165
<input name=btnApagar type=Submit value=Apagar /> <? } ?> </td> </tr> </table> </form>
//caso no exista o objeto cria um novo objeto pois um novo registro if(empty($oMarca)){ $oMarca = new Marca(); $ehNovoRegistro = true; } //Verica se foi clicado no boto apagar if ((isset($_POST[btnApagar])) && ($_POST[btnApagar] ==
166
header(location:marca_lst.php) ?>
Para testar as pginas da aplicao, necessrio incluir alguns registros nas tabelas: Marcas, Modelos e Automveis no banco de dados. Os registros da tabela: Marcas podero ser inseridos por meio das telas da administrao. A partir de agora, voc poder dar continuidade ao desenvolvimento da aplicao. Para isso, basta criar as classes Bean e Regra de Negcio para as tabelas que faltam. Alm disso, voc poder melhorar a administrao da aplicao, incluindo uma tela de autenticao para os funcionrios da revenda. Se voc tiver dvidas de como desenvolver esse recurso, retorne ao captulo 8 do livro-texto e verique o exemplo que desenvolvemos. Ainda na administrao podero ser desenvolvidas as telas de manuteno das outras tabelas do banco de dados, isso dar bastante exibilidade para os mantenedores da aplicao.
167
Sntese
Nesta aula estudamos os passos para o desenvolvimento de uma aplicao para Internet, utilizando PHP e banco de dados MySQL.
CONCLUSO
Atualmente, quase impossvel que uma empresa no possua uma arquitetura cliente-servidor e sistemas disponveis para acesso por meio de um navegador de Internet. Esse fato tem se tornado cada vez mais constante, pois manter as aplicaes agrupadas em um local torna-se mais rentvel para as empresas, que economizaro tempo e recursos com manuteno em aplicaes instaladas em diversas mquinas. Isso sem contar os custos com licenas que os sistemas desktop podem acrescentar ao oramento das empresas. Tambm fato que as aplicaes disponveis na Internet tm evoludo muito e em grande escala. As empresas que fornecem aplicaes e softwares diversos possuem cada vez mais demanda para o prossional que est atualizado com este tipo de tecnologia. Portanto, imprescindvel que os prossionais de informtica, tenham conhecimento bsico da programao para a Internet. Este conhecimento ir possibilitar ao prossional desenvolver aplicaes dinmicas e interativas e disponibiliz-las na Internet. Assim, esse mdulo teve como objetivo principal introduzir os conhecimentos bsicos sobre programao de aplicaes para a Internet, utilizando a linguagem PHP.
168
Aula 1 1) C 2) D 3) C 4) D 5) A, C
Aula 3 1) C 2) D 3) C 4) C 5) B
Aula 4 1) A,B,C 2) C 3) A 4) C 5) C
169
Aula 7 1) B 2) D 3) class.operacao.php <? // declara a classe // o objeto que for criado por meio desta classe assumir a visibilidade e nome // da classe class Operacao{
//declara um atributo private $resultado = 0; // declara o mtodo adio // o mtodo recebe dois nmeros para executar o clculo e // retornar o resultado
170
// declara o mtodo subtrao Public function subtracao($numero1, $numero2){ $this->resultado = $numero1 - $numero2; return $this->resultado; }
// declara o mtodo multiplicao Public function multiplicacao($numero1, $numero2){ $this->resultado = $numero1 * $numero2; return $this->resultado; }
// declara o mtodo diviso Public function divisao($numero1, $numero2){ // faz o tramento para no permitir diviso por zero if($numero2>0){ $this->resultado = $numero1 / $numero2; } return $this->resultado; }
171
} ?>
exemplo29.php
<HTML> <HEAD> <TITLE>Exemplo 29</TITLE> </HEAD> <BODY> <!-Este um comentrio em HTML! Quando queremos que o formulrio envie as variveis para a mesma pgina, no especicamos o atributo: action do comando form --> <form name=form1 method=post>
Nmero 1: <input type=text name=numero1><br> Nmero 2: <input type=text name=numero2><br> <input type=submit name=btnEnviar value=Calcular Soma> </form>
//cria novas variveis com base nas variveis de navegador $num1 = $_POST[numero1]; $num2 = $_POST[numero2];
172
//inclui o arquivo que possui a estrutura da classe para permitir a criao //do objeto require_once(class.operacao.php);
// a partir de agora a varivel: $objOperacao um objeto que possui a estrutura // da classe operao // vamos ento chamar o mtodo adicao e obter o resultado da soma e mostrar // na tela print $objOperacao->adicao($num1,$num2) . <br>;
// como j no precisamos do objeto: $objOperacao, vamos destru-lo unset($objOperacao); } } ?> </BODY> </HTML>
Aula 8 1) C 2) D 3) D 4) D 5) B
173
Aula 9 1) <HTML> <HEAD> <TITLE>Exemplo 33</TITLE> </HEAD> <BODY> <? //conecta com o banco de dados MySQL $conexao = mysql_connect(localhost, root, vertrigo);
//insere os registros na tabela marcas: mysql_query(INSERT INTO marcas VALUES(1,Citroen)); mysql_query(INSERT INTO marcas VALUES(2,Audi)); mysql_query(INSERT INTO marcas VALUES(3,Renault));
//seleciona e mostra os registros $consulta = SELECT marca_cod, marca_desc FROM marcas; $resultado = mysql_query($consulta, $conexao); while ($linha = mysql_fetch_row($resultado)) { print Cdigo: . $linha[0] . <BR>; print Descrio: . $linha[1] . <BR><BR>; }
174
//altera o registro 3 da tabela mysql_query(UPDATE marcas SET marca_desc = Pegeout WHERE marca_cod = 3);
//seleciona e mostra os registros $consulta = SELECT marca_cod, marca_desc FROM marcas; $resultado = mysql_query($consulta, $conexao); while ($linha = mysql_fetch_row($resultado)) { print Cdigo: . $linha[0] . <BR>; print Descrio: . $linha[1] . <BR><BR>; }
175
REFERNCIAS BIBLIOGRFICAS
1. CONVERSE, Tim; PARK, Joyce. PHP A Bblia. So Paulo: Campus / Elsevier, 2003.
176
Copyright Tupy Virtual 2007 Nenhuma parte desta publicao pode ser reproduzida por qualquer meio sem a prvia autorizao desta instituio. Autor: Rosemary Francisco Programao de Pgia WEB - PHP: Material didtico / Rosemary Francisco Design institucional: Thiago Vedoi de Lima; Cristiane de Oliveira - Joinville: Tupy Virtual, 2007 Ficha catalogrca elaborada pela Biblioteca Universitria Tupy Virtual
Crditos
SOCIESC Sociedade Educacional de Santa Catarina Tupy Virtual Ensino a Distncia Rua Albano Schmidt, 3333 Joinville SC 89206-001 Fone: (47)3461-0166 E-mail: ead@sociesc.org.br Site: www.sociesc.org.br/portalead Diretor Geral Sandro Murilo Santos Diretor de Administrao Vicente Otvio Martins de Resende Diretor de Ensino, Pesquisa e Extenso Roque Antonio Mattei Diretor do Instituto Superior Tupy Wesley Masterson Belo de Abreu Diretor da Escola Tcnica Tupy Luiz Fernando Bublitz Coordenador da Escola Tcnica Tupy Alexssandro Fossile Alan Marcos Blenke Coordenador do Curso Juliano Prim Coordenador de Projetos Jos Luiz Schmitt Revisora Pedaggica Ndia Ftima de Oliveira Equipe Didtico-Pedagcia Rosemary Francisco Design Grco Thiago Vedoi de Lima
EDIO MATERIAL DIDTICO Professor Conteudista Rosemary Francisco Design Institucional Thiago Vedoi de Lima Cristiane Oliveira Ilustrao Capa Thiago Vedoi de Lima Projeto Grco Equipe Tupy Virtual Reviso Ortogrca Ndia Ftima de Oliveira
EQUIPE TUPY VIRTUAL Raimundo Nonato Gonalves Robert Wilson Jos Mafra Thiago Vedoi de Lima Cristiane Oliveira