Você está na página 1de 176

Programao de Pgina WEB - PHP

Edio n1 - 2007

ROSEMARY FRANCISCO
Apoio Gesto e Execuo Contedo e Tecnologia

Programao de Pgina WEB - PHP

Apresentao
Este livro didtico contm a disciplina de Programao Pgina WEB - PHP. O contedo desse material ir disponibilizar aos alunos do EAD os conceitos fundamentais do Sistema Gerenciador de Banco de Dados, bem como as principais tcnicas que so utilizadas para modelagem, criao e manuteno de um banco de dados. Para sua melhor compreenso, o livro est estruturado em duas partes. Na primeira, so apresentados os conceitos fundamentais do banco de dados, que proporcionar um primeiro contato com essa tecnologia. Tambm na primeira parte, demonstrado o funcionamento do Modelo Relacional, que a base para a tecnologia de banco de dados. A segunda parte engloba as tcnicas para a definio de um projeto de banco de dados: normalizao, modelagem e as dependncias funcionais e, ainda, uma anlise mais ampla sobre o funcionamento e os recursos disponibilizados pelos Sistemas Gerenciadores de Banco de Dados. Lembre-se de que a sua passagem por esta disciplina ser tambm acompanhada pelo Sistema de Ensino Tupy Virtual, seja por correio postal, fax, telefone, email ou Ambiente Virtual de Aprendizagem. Sempre entre em contato conosco quando surgir alguma dvida ou dificuldade. Toda a equipe ter a maior alegria em atend-lo, pois a sua aquisio de conhecimento nessa jornada o nosso maior objetivo. Acredite no seu sucesso e bons momentos de estudo! Equipe Tupy Virtual.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 profissionais 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 final, 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 desafio! Professora Rosemary Francisco

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

Cronograma de Estudos
Acompanhe no cronograma abaixo os contedos das aulas, e atualize as possveis datas de realizao de aprendizagem e avaliaes. Semanas 1 Carga Horria 2 2 2 2 2 3 3 2 2 4 4 2 2 1 2 1 2 2 Unidade Data/Avaliao Viso geral do gerenciamento _/_ a _/_ de bancos de dados Arquitetura de sistemas de ban_/_ a _/_ cos de dados Introduo aos bancos de da_/_ a _/_ dos relacionais Uma introduo SQL _/_ a _/_ Introduo ao Modelo Relacio_/_ a _/_ nal lgebra Relacional _/_ a _/_ Clculo relacional _/_ a _/_ Integridade _/_ a _/_ Dependncias funcionais _/_ a _/_ Normalizao _/_ a _/_ Modelagem semntica _/_ a _/_ Tabelas _/_ a _/_ ndices _/_ a _/_ Consultas de Seleo _/_ a _/_ Consultas de Ao _/_ a _/_ Vises Views _/_ a _/_ Procedimentos Armazenados _/_ a _/_ Store Procedures Disparadores Triggers _/_ a _/_

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

PLANO DE ESTUDOS

Ementa Conceito de Sistemas Gerenciadores de Banco de Dados. Componentes. Modelos de SGBD. Criao de um banco de dados. Projetando e criando tabelas. Gerenciamento do banco de dados. Consultando o banco de dados. Criando relatrios. Otimizao do banco de dados e segurana do banco de dados. SQL. Banco de dados distribudos. Principais produtos SGBD do mercado. Banco de dados e o paradigma de objetos. Objetivos da Disciplina Geral Compreender os sistemas de bancos de dados. Especficos - Introduzir os conceitos fundamentais dos sistemas de bancos de dados. - Relacionar o funcionamento do Modelo Relacional e os objetos que compem o Modelo Relacional. - Demonstrar as melhores prticas para normalizao e modelagem dos dados em um Projeto de Banco de Dados. - Ampliar os conhecimentos e a aplicao da linguagem de banco de dados SQL - Ampliar os conhecimentos sobre o funcionamento e os recursos disponveis pelos Sistemas Gerenciadores de Banco de Dados.

Carga Horria: 40 horas/aula.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

Aula 1

VISO GERAL SOBRE A LINGUAGEM PHP


Nesta prxima aula voc ir conhecer como funcionam as linguagens de programao para a Internet, tendo como foco principal a linguagem PHP. Veremos o que PHP, como e quando surgiu essa linguagem, quais as principais vantagens em utilizar a linguagem PHP para desenvolver aplicaes para Internet e como deve ser o ambiente de desenvolvimento para trabalhar com a linguagem. Bom estudo! Objetivos da Aula Ao final desta aula voc dever ser capaz de: Identificar o que uma arquitetura cliente-servidor; Analisar as vantagens da utilizao da linguagem PHP para programao para Internet; Identificar 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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

1 INTRODUO AS LINGUAGENS DE PROGRAMAO PARA INTERNET 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 significa 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 figura 1 demonstra o funcionamento da arquitetura cliente-servidor.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

Figura 1 Representao simplificada da arquitetura cliente-servidor Analisando a representao da figura 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 figura 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 figura 1, j podemos verificar que ser necessrio um interpretador da linguagem PHP para retornar ao usurio da aplicao o resultado final esperado. O surgimento das linguagens de programao para Internet foi justamente

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 identificaram a demanda e assim comearam a nascer as linguagens voltadas para o desenvolvimento de aplicaes cada vez mais dinmicas para a Internet. 1.1 O QUE PHP? 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. 1.2 COMO SURGIU? 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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 ficaram 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. 1.3 VANTAGENS DA LINGUAGEM PHP 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;

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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. 1.4 COMO TRABALHAR COM PHP Os primeiros passos para iniciar o desenvolvimento de aplicaes com a linguagem PHP a preparao do ambiente de desenvolvimento. Para isso, certifiquese 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 configurado 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 configurao do ambiente de desenvolvimento, existe atualmente uma ferramenta chamada Vertrigo que permite a instalao e configurao 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 configurao disponveis no site. A instalao do Vertrigo bem simples, possui a caracterstica: Next, Next, Finish ou, em portugus: Prximo Passo, Prximo Passo, Concluir.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 configurado 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 configuradas em seu computador. Para inicializar o servidor, basta clicar no boto: Hide this window and start server que significa: Esconda essa janela e inicie o servidor. A figura 2 ilustra a janela do VertrigoServ.

Figura 2 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 figura 3 mostra a tela do VertrigoServ.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

14

Figura 3 Tela do VertrigoServ Aps digitar o comando, ser mostrada a tela do VertrigoServ. A figura 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 figura 4 ilustra a tela com as informaes do PHP.

Figura 4 Tela com as Informaes do PHP

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

15

Aps validar a configurao 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 figuras 5 a 8 ilustram o processo de instalao do PHP Editor.

Figura 5 Tela 1 da 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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

16

Em seguida, o instalador ir solicitar a confirmao 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.

Figura 6 Tela 2 da Instalao do PHP Editor Aguarde at o processo de instalao finalizar (figura 7). Quando o processo de instalao finalizar, 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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 confirmar 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 figura 8 ilustra a ferramenta PHP Editor que utilizaremos durante o curso.

Figura 8 Ferramenta PHP Editor

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

18

No prximo captulo, vamos conhecer a sintaxe da linguagem PHP.

Sntese Nesta aula vimos: Uma introduo s linguagens para desenvolvimento de aplicaes para Internet; A definio 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 definido como: a. Uma linguagem de programao para Internet b. Uma linguagem Open Source c. Uma linguagem interpretada

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

19

d. Uma linguagem compilada 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

20

Aula 2

INTRODUO LINGUAGEM PHP

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 configurado. Bom estudo!

Objetivos da Aula Ao final 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

21

1 CONHECENDO A SINTAXE BSICA DA LINGUAGEM 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. 1.1 Delimitando o cdigo PHP Para fazer a interpretao de um cdigo PHP e disponibilizar no formato HTML, o interpretador procura um identificador que sinaliza o incio do cdigo PHP. Esse identificador chamado de delimitador. Por meio do delimitador, o interpretador saber onde o incio e o fim do cdigo PHP. O delimitador PHP representado pelos smbolos: <?php ou somente <? = incio do bloco de comandos; ?> = fim do bloco de comandos. O exemplo abaixo demonstra como utilizar o delimitador PHP: <?php //instrues PHP; ?>
SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

22

ou <? //instrues PHP; ?> 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>

</html>

</body>

<b><? print Ol Seja Bem Vindo ao PHP ?> </b>

Analisando o contedo da pgina, as instrues que esto em negrito so especficas da linguagem HTML e a instruo que no est em negrito uma instruo PHP. O interpretador ir identificar a existncia de uma instruo PHP por meio dos delimitadores: <? ?> e interpretar a instruo que foi definida. 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

23

1.2 Separador de instrues Outro item importante que devemos utilizar no desenvolvimento com PHP o separador das instrues. Cada instruo definida em uma pgina em PHP deve ser finalizada com um ponto e vrgula ;. O interpretador do PHP l as instrues de uma pgina linha a linha. Quando ele identifica o final de uma instruo, interpreta a instruo e, caso tenha sucesso, ir disponibilizando o resultado parcialmente. Isso significa que a pgina HTML, resultante do processo de interpretao, ser montada aos poucos, conforme a finalizao da interpretao das instrues. Esse processo, muitas vezes, transparente aos olhos do usurio, sendo possvel sua identificao 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 definida. 1.3 Nomes de variveis Diferente da maioria das linguagens de desenvolvimento, tanto para a Internet quanto para aplicaes diversas, a linguagem PHP possui uma caracterstica especfica para declarao de nomes de variveis. Ao declarar um nome para uma varivel, necessrio incluir o smbolo: $ antes da varivel. Esse smbolo ir identificar 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 ?>
SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 fica 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, fica 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 fica no cdigo e nunca ser interpretado e mostrado na pgina final em HTML para o usurio. */ print Essa frase ser mostrada duas linhas abaixo da primeira frase e abaixo do comentrio de bloco; ?>

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

25

1.5 Imprimindo cdigo na tela 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 ficar mais clara a funo do comando de impresso na tela. 2 DESENVOLVENDO O PRIMEIRO EXEMPLO COM PHP 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 figura 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 (figura 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 figura 9 mostra onde deve ser selecionado o diretrio: apostila_php.

Figura 9 Selecionando diretrio: apostila_php no PHP Editor 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:

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

27

/PHP e clique no boto: OK. A figura 10 ilustra a janela com as opes de arquivos que podem ser criados.

Figura 10 Criando arquivos no PHP Editor A seguir ser mostrada a estrutura de um arquivo em PHP. A figura 11 ilustra o formato de um novo arquivo em PHP criado pelo PHP Editor.

Figura 11 Novo arquivo PHP As instrues em PHP do exemplo devero ficar dentro dos delimitadores do PHP: <? e ?>. Os demais comandos que aparecem no arquivo so comandos HTML

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

28

utilizados para a formatao da pgina HTML final, criada pelo interpretador PHP, ao final 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 figura 12 ilustra como ficar o cdigo arquivo exemplo4.php.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

29

Figura 12 Arquivo exemplo4.php 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 final, o contedo da pgina HTML gerado disponibilizado pelo servidor WEB Apache do ambiente VertrigoServ. A figura 13 ilustra o resultado do teste.

Figura 13 Testando o exemplo4.php

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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. 1. Testar o arquivo: principal.php disponvel no diretrio: aplicacao1: http://localhost/aplicacao1/principal.php 2. Testar o arquivo: teste.php disponvel no diretrio: aplicacao2: http://localhost/aplicacao2/teste.php 3. Testar o arquivo: exemplo1.php disponvel no diretrio: apostila_php: http://localhost/apostila_php/exemplo1.php

Sntese Nesta aula vimos: A sintaxe bsica da linguagem PHP; Como desenvolver e testar um exemplo bsico em PHP.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - 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 finalizadas 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

32

5) O comando PHP que imprime instrues na tela o ( permitida mltipla escolha): a. printf b. print c. printout d. echo

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

33

Aula 3

TIPOS DE DADOS SUPORTADOS PELA LINGUAGEM PHP

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 final desta aula, voc dever ser capaz de: Identificar 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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

34

1 INTRODUO AOS TIPOS DE DADOS DO PHP 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 varivel est recebendo um valor inteiro: $numero1 = 10; //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; ?>

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

35

Se voc testar o exemplo acima, ir verificar 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 verificar e executar aes diversas. Nesse exemplo, portanto, para verificarmos 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); ?>

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

36

O resultado do teste mostrado na figura 14:

Figura 14 Testando o exemplo5.php De acordo com o resultado, podemos verificar 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 verificar 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 Vamos analisar, um a um, cada tipo de dado.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

37

1.1 Nmeros Inteiros 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. 1.2 Nmeros com casas decimais 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 especificados da seguinte forma: <? $numero1 = 1.234; $numero2 = 23e4; // representa o nmero 230.000 ?>
SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 verificar 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; //vamos utilizar o comando <br> do HTML para pular uma linha print <br>; /* atribuindo texto com aspas duplas, vai interpretar o caracter de escape \n */ $texto2 = Esse o texto atribudo com aspas simples, vai interpretar o \n informado ; print $texto2; ?>
SOCIESC - Sociedade Educacional de Santa Catarina

informado ;

Programao de Pgina WEB - PHP

39

Analisando o resultado do exemplo, vamos verificar 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 \\ \$ \ \ Significado Nova linha Retorno de carro (semelhante a \n) Tabulao horizontal A prpria barra ( \ ) O smbolo $ Aspa simples Aspa dupla

Verifique 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 identificar 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: <? //verificar texto2 com a formatao de quebra de linha do \n print <pre>$texto2</pre>; ?> Executando novamente o exemplo completo no navegador, podemos verificar 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>

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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: <? //verificar a impresso na tela com aspas simples print <pre>$texto2</pre>; ?> Executando o exemplo novamente, o resultado ser a ilustrao da figura 15:

Figura 15 Testando o exemplo6.php 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:

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

41

1. Verdadeiro = True ou 1 2. Falso = False ou 0 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 ficam 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] ?> 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. $array2[2] $array2[3] <BR>;

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 ficou 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. 2 TRANFORMANDO OS TIPOS DE DADOS 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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. <? // exemplo de coero $inteiro = 1; $real = 2.5; print tipo de dados da varivel $inteiro = .

gettype($inteiro) . <br>; print tipo de dados da varivel $real = . gettype($real) . <br>; $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;
SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

44

print valor da varivel resultado = $resultado <br>; print ?> Ao analisarmos o resultado do exemplo, podemos verificar 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. 2.2 Transformao explcita de tipos de dados 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), (float) = altera o tipo de dado para float; (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. <? // exemplo utilizando cast $numero = 1; tipo de dado da varivel resultado = . gettype($resultado) . <br>;

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 verificar que a varivel $numero passou a assumir o tipo de dado: double. 2.3 Transformando tipos de dados com a funo settype 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): <? // exemplo utilizando a funo settype $texto = 10; //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>;

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

49

Aula 4

TRABALHANDO COM VARIVEIS E CONSTANTES


Caro aluno(a)! Nesta quarta aula vamos identificar a diferena entre variveis e constantes. Estudaremos como utiliz-las nas aplicaes desenvolvidas em PHP. Alm disso, verificaremos quais so os tipos de variveis disponveis em PHP e como podemos trabalhar com elas. Por fim, veremos mais algumas funes disponveis em PHP que podem nos auxiliam nos procedimentos com variveis. Bom estudo! Objetivos da Aula Ao final desta aula, voc dever ser capaz de: Identificar os tipos de variveis existentes em PHP; Utilizar variveis para criar rotinas em PHP; Utilizar funes do PHP para trabalhar com as variveis; Identificar 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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

50

1 TRABALHANDO COM VARIVEIS No captulo anterior, vimos que na linguagem PHP, no h necessidade de declarar as variveis com um tipo de dado especfico, 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 verificar 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. 1.1 Variveis enviadas pelo navegador 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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

51

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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 definido no comando: action=exemplo11.php do comando <form></form> do formulrio HTML. O tipo de varivel a ser enviado para a pgina definido 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, identificamos 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. Verifique 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
SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 ficam 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 definir 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. 1.2 Variveis de ambiente 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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

54

1.3 Variveis de sesso 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. 2 FUNES PHP PARA TRABALHAR COM VARIVEIS 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. 2.1 Funes que testam o tipo de dado de uma varivel 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_float = testa se o tipo de dado da varivel float 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. Para utilizar essas funes, deveremos seguir o modelo abaixo: nome_funcao(nome_variavel);

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 verificar 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 significa que a varivel: $variavelString possui o tipo de dado: String. 2.2 Funo que destri uma varivel 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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. 2.3 Funes que verificam se uma varivel possui valor Existem duas funes que verificam 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 verificado 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 verificado 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 = ; // verifica se a $variavel1 possui valor vazio ou nulo print variavel1 = . empty($variavel1); print <br>; //destroi a $variavel1 unset($variavel1);
SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

57

//verifica se existe a $variavel1 print variavel1 = . isset($variavel1); ?> </BODY> </HTML> 3 TRABALHANDO COM CONSTANTES Constantes podem ser definidas como uma varivel que possui um valor constante, ou seja, o valor ser definido 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 configuraes / 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 definido em uma constante. Para definir uma constante na aplicao, utilizamos a funo: define(nome_ da_constante,valor_da_constante). A linguagem PHP possui algumas constantes pr-definidas que permitem verificar as configuraes 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-definidas 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 definir e utilizar uma constante dentro das pginas PHP: Pgina: exemplo14.php

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

58

<HTML> <HEAD> <TITLE>Exemplo 14</TITLE> </HEAD> <BODY> <? // definir a constante taxa de juros define(taxaJuros,0.5); // imprime o valor da constante na tela print taxa de Juros = . taxaJuros; print <br>; // utiliza a constante para um clculo $valor = 100.00*taxaJuros; // imprime o resultado do clculo com a constante print valor = . $valor; ?> </BODY> </HTML>

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 configurao do PHP (apenas uma alternativa correta): a. Ambiente

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

60

b. Post c. Sesso d. Servidor 4) A funo que verifica 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

61

Aula 5

OPERADORES DA LINGUAGEM PHP

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 fim, realizaremos alguns testes para identificar melhor a funcionalidade dos operadores e tambm da expresso condicional. Bons Estudos!

Objetivos da Aula Ao final desta aula, voc dever ser capaz de: Identificar os tipos de operadores da linguagem PHP; Utilizar os tipos de operadores; Identificar 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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

62

1 CONHECENDO OS TIPOS DE OPERADORES 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, verificremos quais so os tipos de operadores e como podemos utiliz-los em nossas pginas PHP. 1.1 Operadores Aritmticos 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

O exemplo demonstra a utilizao dos operadores aritmticos nas pginas em PHP: Pgina: exemplo15.php <HTML> <HEAD> <TITLE>Exemplo 15</TITLE> </HEAD> <BODY> <?

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

63

// utilizando operaes matemticas $numero1 = 10; $numero2 = 3;

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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

64

1.2 Operador String 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 significa 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>

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

65

1.3 Operadores de Atribuio 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 significa que a atribuio ir alterar definitivamente 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 verificarmos 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; // utilizando o operador de atribuio concatenao

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

66

$texto .= $numero; // imprime o valor da varivel $texto print $texto; print <BR>; // utiliza o operador de atribuio adio $numero += 2; // imprime o valor da varivel $numero print $numero; ?> </BODY> </HTML> 1.4 Operadores Lgicos 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. 1.5 Operadores de Comparao Os operadores de comparao so utilizados para comparar valores entre

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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. 1.6 Operadores de Incremento e Decremento 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

Assim como os operadores lgicos e de atribuio, utilizaremos bastante os

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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> 2 CONHECENDO A EXPRESSO CONDICIONAL A expresso condicional considerada um tipo de operador. Tambm conhecida como um operador de seleo ternrio. A funo da expresso condicional verificar uma dada condio e, dependendo do valor da condio retornado valor booleano: true ou false a expresso executar

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

69

uma instruo. A sintaxe da expresso condicional : (condio)?(instruo1):(instruo2) 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 verificar 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 verificar se os valores das variveis: $numero1 e $numero2 so iguais e depois imprime um texto de acordo com o retorno da condio / comparao feita */
SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

70

print ($numero1==$numero2)?Valores iguais:Valores diferentes; print <BR>; ?> </BODY> </HTML>

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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

72

5) A expresso condicional pode ser definida como ( permitida mltipla escolha): a. Um operador aritmtico b. Um operador de atribuio c. Um comando de seleo d. Um operador de seleo ternrio

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 final desta aula, voc dever ser capaz de: Identificar quais so as estruturas de controle do PHP; Identificar 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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

74

1 INTRODUO S ESTRUTURAS DE CONTROLE 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, identificar 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 verificar 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 fim 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, verificaremos 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, definidos de acordo com o resultado da comparao.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

75

A expresso condicional, que verificamos 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 verificar 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 IF(condio){ Instruo1; Instruo2; Etc; } 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 definida. 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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

76

Pgina: exemplo20.php <HTML> <HEAD> <TITLE>Exemplo 20</TITLE> </HEAD> <BODY> <? // testando o if $numero1 = 5; $numero2 = 4; /* utiliza o if para verificar 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 */ print As variveis possuem valores diferentes; print <BR>; } ?> </BODY> </HTML> Analisando o resultado do teste, verificaremos 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 verificar se os valores das variveis so iguais. Para isso, vamos utilizar o operador de comparao de igualdade: if ($numero1!=$numero2){

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

77

Pgina: exemplo21.php <HTML> <HEAD> <TITLE>Exemplo 21</TITLE> </HEAD> <BODY> <? // testando o if $numero1 = 5; $numero2 = 4; /* utiliza o if para verificar 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> 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 : As variveis possuem valores

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

78

IF(condio) Instruo; Else Instruo; Ou para utilizar com bloco de comando: IF(condio){ Instruo1; Instruo2; Etc; } Else { Instruo1; Instruo2; Etc; } 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 fica a sintaxe: IF(condio1){ Instruo1; Instruo2; Etc; } Else IF(condio2) { Instruo1; Instruo2; Etc;

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 final, 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: Pgina: exemplo22.php <HTML> <HEAD> <TITLE>Exemplo 22</TITLE> </HEAD> <BODY> <?

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

80

// testando o IF encadeado $numero1 = 5; $numero2 = 4; $numero3 = 5; // 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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 ficar mais enxuto e ter o mesmo efeito. Vamos analisar a sintaxe do switch: Switch(valor_a_ser_comparado){ Case valor1: Break; Instruo; 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: Pgina: exemplo23.php <HTML>
SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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:

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 fique 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 fique 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 A estrutura de repetio while possui a seguinte sintaxe: While(condio) Instruo; Ou utilizando bloco de comandos:

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

84

While(condio){ Instruo1; Instruo2; InstruoN; } 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 ficar 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 infinitamente. Essa caracterstica comum para todas as estruturas de repetio. No caso especfico 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;

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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>; // verifica se o valor da varivel 10 e imprime o fim do loop if($numero==10) print Fim do Loop; } ?> </BODY> </HTML> 3.2 Do ... while 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 final do comando. Isso significa 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:

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

86

Do{ Instruo; }while(condio); 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>;

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

87

// verifica se o valor da varivel maior ou igual 10 e imprime o fim 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 fim dessa lista. imprescindvel que saibamos o incio e o fim da lista, pois estes dados so utilizados na sintaxe do for. Vamos analisar a sintaxe do for: For(inicializao;condio;incremento ou decremento do contador) Instruo; Ou utilizando bloco de comandos:
For(inicializao;condio;incremento ou decremento do contador){ Instruo1; InstruoN; }

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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>

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

89

4 ESTRUTURAS DE QUEBRA DE FLUXO As estruturas de quebra de fluxo so geralmente utilizadas para dar suporte s outras estruturas de controle. So utilizadas para quebrar o fluxo 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 fluxo: 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 definidas. 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 fluxo 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. Pgina: exemplo27.php <HTML> <HEAD> <TITLE>Exemplo 27</TITLE> </HEAD> <BODY> <?

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

90

// testando a quebra de fluxo 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> 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 fluxo 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 fluxo 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. $numero . mltiplo de

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

91

Vamos utilizar o mesmo exemplo do Break, alterando-o para Continue e verificar a diferena entre eles. Pgina: exemplo28.php <HTML> <HEAD> <TITLE>Exemplo 28</TITLE> </HEAD> <BODY> <? // testando a quebra de fluxo 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> 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 fica abaixo do continue, assim como quando utilizamos o break, nunca ser executada. $numero . mltiplo de

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

93

4) A estrutura de repetio que testa o valor da condio no final : a. While b. For c. Do ... While d. Switch 5) As estruturas de quebra de fluxo so utilizadas para ( permitida mltipla escolha): a. Finalizar uma instruo b. Dar suporte s outras estruturas de controle c. Alterar o fluxo das estruturas de repetio d. Interromper a execuo da pgina

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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; verificaremos a aplicao desses conceitos na linguagem PHP e, ao final, 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 final desta aula, voc dever ser capaz de: Identificar os conceitos bsicos de Orientao a Objetos; Identificar 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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

95

1 REVISANDO CONCEITOS BSICOS DA ORIENTAO A OBJETOS 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 verificaremos 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 suficientes para compreendermos como a linguagem PHP implementa a programao orientada a objetos. 1.1 Classes e Objetos Na definio bsica da orientao a objetos, uma classe pode ser definida como a estrutura que cria novos objetos. Isso significa 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 definidos 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 definir algumas funcionalidades especficas para cada objeto. No exemplo do objeto Aluno, definimos 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 definir 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, identificamos 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 definidas na aplicao. Logo, a funcionalidade remover registro de aluno tambm comum para todos os objetos Aluno. Aps essa anlise, podemos identificar 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 definio 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 definio da classe: pode ser definida 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 verificar o formato de uma classe: Classe Aluno Atributos: Matrcula Nome Endereo Telefone

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

98

Funcionalidades: Cadastra Aluno Altera dados do Aluno Apaga dados do Aluno Retorna dados do Aluno Analisando o formato da classe aluno, verificamos que foram definidos os atributos utilizados pelo objeto Aluno e tambm suas funcionalidades. A funo da classe ter a estrutura final 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 definir 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 definido na classe que o criou. 1.2 Estrutura das Classes 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 definidos de acordo com os dados dos objetos que desejamos armazenar e/ou manipular. Quando definimos a estrutura de uma classe, podemos incluir um mtodo construtor. O mtodo construtor sempre ser executado toda vez que a classe for

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 especfico da aplicao executado e a utilizao do objeto em memria no mais necessria. Para evitar que os objetos fiquem 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 definido dentro da classe. A ao que o mtodo ir executar tambm ser definida 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, verificaremos qual a sintaxe para a definio das classes

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

100

e como feita a criao dos objetos por meio de uma classe. 2 TRABALHANDO COM CLASSES E OBJETOS Quando definimos uma classe em PHP, devemos utilizar a seguinte sintaxe: class NomeDaClasse{ [modificador] atributo1; [modificador] atributoN; [modificador] function mtodo1([parmetros]){ Instruo1; InstruoN; } [modificador] function mtodo1([parmetros]){ Instruo1; InstruoN; } } Observemos que existem alguns itens entre colchetes, so os modificadores e os parmetros, representados entre colchetes, pois a definio deles opcional. Isso significa que no necessrio informar estes itens, quando definimos 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 modificadores indicados na sintaxe da classe so os comandos que definem a visibilidade dos itens da classe e, conseqentemente, do objeto criado por meio dela. A visibilidade identificar como os atributos e mtodos sero utilizados por toda a aplicao. H trs tipos de visibilidade:

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 ficam 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 significa que somente a prpria classe/objeto poder acessar e manipular os atributos e mtodos definidos como privados. Geralmente, os atributos de uma classe so definidos como privados utilizam o modificador 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 um atributo private $resultado; // declara o mtodo adio // o mtodo recebe dois nmeros para executar o clculo e retornar o // resultado
SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

102

Public function adicao($numero1, $numero2){ $this->resultado = $numero1 + $numero2; return $this->resultado; } } ?> 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 definida. 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 verifica 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!

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

103

Quando queremos que o formulrio envie as variveis para a mesma pgina, no especificamos 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> <? //verifica se existe a varivel de navegador numero1 if(isset($_POST[numero1])){ //cria novas variveis com base nas variveis de navegador $num1 = $_POST[numero1]; $num2 = $_POST[numero2]; //verifica se as variveis possuem valor diferente de vazio if(!empty($num1) && !empty($num2)){ // inclui o arquivo que possui a estrutura da classe para permitir a // criao do objeto require_once(class.operacao.php); // cria o objeto $objOperacao = new Operacao(); // a partir de agora a varivel: $objOperacao um

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - 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>; // como j no precisamos do objeto: $objOperacao, vamos destru-lo Unset($objOperacao); } } ?> </BODY> </HTML> Ao analisarmos o cdigo fonte do exemplo29.php, podemos identificar 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 identificada. 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

105

ser criado e o mtodo: adicao executado. Como o mtodo adicao retorna o resultado, podemos imprimir o resultado na tela. Ao final, como no iremos mais utilizar o objeto: Operao, podemos destru-lo, removendo-o da memria. Sntese Nesta aula fizemos 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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

106

Aula 8

CONTROLE DE SESSO

Caro aluno(a)! Nesta oitava aula voc estudar sobre o controle de sesso em PHP. Verificaremos 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 final desta aula, voc dever ser capaz de: Identificar 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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

107

1 INTRODUO AO CONTROLE DE SESSO 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 finalizao 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 identificao 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 verificar 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

108

de sesso. session_is_registered(nome_da_variavel) - verifica se a varivel de sesso existe na sesso. Essa funo ir retornar um valor booleano - verdadeiro ou falso. session_destroy() = finaliza 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(), finaliza todas as variveis mantidas na sesso. 2 TESTANDO O CONTROLE DE SESSO EM PHP 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>
SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

109

Pgina: exemplo31_form.php <? //inicia a sesso session_start(); if(isset($_POST[login])){ $login = $_POST[login]; $senha = $_POST[senha]; //verifica se o login e senha informados esto corretos if($login == user && $senha == 1234){ //cria a varivel de sesso $_SESSION[user] = $login; } } // redireciona para a tela exemplo32.php header(location:exemplo32.php); ?> Pgina: exemplo32_form.php <? //inicia a sesso session_start(); ?> <HTML> <HEAD> <TITLE>Exemplo 32</TITLE> </HEAD> <BODY>
SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

110

<? //verifica 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, definido 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 finalizarmos 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 final 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

111

certeza de que no ser impresso nada na tela do usurio. Outra dica importante com relao funo: session_start(). Se voc verificar 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 verificar como funcionam as sesses em PHP.

Exerccios propostos 1) A sesso pode ser definida como (apenas uma alternativa correta): a. Uma varivel b. Uma constante c. Uma identificao 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

113

Aula 9

TRABALHANDO COM BANCO DE DADOS MYSQL


Caro aluno(a)! Nesta nona aula estudaremos as principais formas de integrao do PHP com o banco de dados MySQL. Identificaremos as principais funes para conexo e manipulao dos dados de um banco de dados e os procedimentos necessrios para a conexo com esse banco. Bons Estudos!

Objetivos da Aula Ao final desta aula, voc dever ser capaz de: Identificar quais so as funes necessrias para trabalhar com o MySQL; Identificar 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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 definido onde sero publicados os contedos armazenados em banco de dados e, conforme so atualizados sero disponibilizados automaticamente no local definido. 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 configurado em sua mquina a verso 5 do MySQL. 1.1 Conectando com o MySQL A linguagem PHP disponibiliza vrias funes que permitem a integrao com o banco de dados MySQL. Identificar 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);

Analisando a sintaxe da funo de conexo com o servidor, podemos verificar

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 identificador 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 identificador da conexo com o servidor ficar 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, identificador_conexao); A funo de seleo do banco de dados que ir retornar 0, se no encontrar o banco de dados no servidor especificado pelo identificador 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. 1.2 Executando comandos de manipulao de dados Para executar comandos de manipulao de dados no MySQL, por meio da

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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, identificador_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, significa que instruo SQL foi executada corretamente pelo servidor MySQL e a manipulao dos dados foi executada com sucesso. 1.3 Executando comandos de seleo de dados 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 identificador que possui a identificao do resultado da seleo realizada. Para visualizarmos o resultado da seleo, ser necessrio utilizarmos a funo mysql_result, cuja sintaxe :
mysql_result(identificador_resultado, linha_registro, campo_registro);

O identificador do resultado obtido por meio do retorno da funo mysql_query. A linha especifica a linha de registro a ser exibida, j que uma query SELECT pode retornar diversas linhas de registros, e campo o identificador do campo a ser exibido. Vejamos um exemplo: $consulta = SELECT nome, email FROM usuario WHERE nome LIKE Joo;
SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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(identificador_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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

120

Aula 10

ESTUDO DE CASO: REVENDA DE AUTOMVEIS


Caro aluno(a)! Nesta dcima aula reveremos todos os conceitos vistos at agora e consolidaremos nossos conhecimentos com o incio do desenvolvimento de uma aplicao para revenda de automveis. Verificaremos os passos principais para o desenvolvimento de uma aplicao e efetivaremos uma funcionalidade completa para manuteno dos dados de uma tabela no banco de dados. Ao finalizar essa aula, ficar como desafio para voc, desenvolver o restante da aplicao seguindo as dicas e o conhecimento adquirido na disciplina. Bons Estudos e bom desenvolvimento! Objetivos da Aula Ao final 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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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. Verificaremos 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 finalizarmos esses itens, voc j ser capaz de dar continuidade na aplicao e desenvolver os demais recursos. Ao final do captulo, algumas sugestes de funcionalidades sero apresentadas para enriquecer a aplicao da revenda de automveis. 2 DESENVOLVENDO AS CLASSES DE CONEXO 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

122

static $instancia = false; private $server = localhost; private $user = root; private $password = vertrigo; private $conexao; //Construtor Private - No possvel utilizar new em outras classes private function __construct() { //faz a conexo com o banco de dados $this->conexao = mysql_connect($this->server, $this>user, $this->password); } //Metodo para recuperar instancia public function getInstancia() { if (!ConexaoBanco::$instancia) {

ConexaoBanco::$instancia = new ConexaoBanco();//chamando construtor } return ConexaoBanco::$instancia; } public function getConexao(){ return $this->conexao; } //destrutor - destri conexo com o banco function __destruct(){

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 finalizado/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 identificador da conexo realizada e o getInstancia sempre retornar o mesmo objeto em memria para os demais objetos da aplicao. Esse mtodo foi configurado 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 finalizadas. Essas conexes que ficam 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 final da aplicao, essa conexo ser devidamente finalizada. Agora vamos analisar o cdigo-fonte da classe: class.acessobanco.php: <?php require(class.conexaobanco.php); class AcessoBanco{ private $base = revenda; private $conexao; //mtodo construtor public function AcessoBanco(){

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

124

//conexo com o banco de dados $oConexaoBanco = ConexaoBanco::getInstancia(); $this->conexao = $oConexaoBanco->getConexao(); }

//mtodo que retorna o valor do campo informado no parmetro public $paramWhere){ $valorCampo = ; //comando SQL que busca o valor do campo informado $comandoSql = SELECT . $paramCampo . FROM . $paramFrom . WHERE . $paramWhere; function getValorCampo($paramCampo, $paramFrom,

//executa o comando SQL no banco de dados $resultado = mysql_db_query ($this->base, $comandoSql, $this->conexao); //pega a qtde de registros retornados $qtdeRegistros = mysql_num_rows ($resultado); if ($qtdeRegistros > 0) { $valorCampo = mysql_result($resultado,0,$paramCa mpo); } return $valorCampo; }

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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; //inclui condio quando existir if (!empty($paramCondicao)){ $comandoSql .= WHERE . $paramCondicao; } //inclui ordenao quando existir if (!empty($paramOrdenacao)){ $comandoSql .= ORDER BY . $paramOrdenacao; } //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++;

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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); //verifica se deve ser retornado o id $id = mysql_insert_id($this->conexao); //verifica se teve erro no query if (mysql_errno($this->conexao)){ echo mysql_error($this->conexao); } return $id; }

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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); //verifica se teve erro no query if (mysql_errno($this->conexao)){ echo mysql_error($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; //executa o comando SQL no banco de dados

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

128

$resultado = mysql_db_query ($this->base, $comandoSql, $this>conexao); } } ?> 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 flexibilidade e organizao dos comandos SQL em um nico local. Observando os mtodos criados, identificamos 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 significa 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. 3 DESENVOLVENDO AS CLASSES DE NEGCIO 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 final, 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

129

programao orientada a objetos e identifica as classes que possuem a estrutura das tabelas definidas 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{ //atributos private $cod; private $desc; //mtodo construtor da classe public function Marca(){ $this->cod = 0; $this->desc = ; } //mtodos da classe //cod public function setCod($paramCod){ $this->cod = $paramCod; }
SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

130

public function getCod(){ return $this->cod; } //desc public function setDesc($paramDesc){ $this->desc = $paramDesc; } public function getDesc(){ return $this->desc; } } ?> Analisando a classe Bean da tabela: Marcas, identificamos 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. Classe Regra de Negcio class.marcaRN.php <?php // incluso do arquivo de classe Marca require_once(class.marca.php); //inclui o arquivo da classe AcessoBanco require_once(class.acessobanco.php);

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

131

class MarcaRN{

//retorna uma lista de objetos Marca public static function getListaObjeto($paramCondicao = , $paramOrderBy = marca_desc){ //instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco(); //seta os valores para passar por parmetro $tabela = marcas; $campos = marca_cod, marca_desc; $condicao = $paramCondicao; //pega a lista de registros $resultado = $acessoBanco->selectRegistro($tabela, $campos, $condicao, $paramOrderBy); class MarcaRN{

//retorna uma lista de objetos Marca public static function getListaObjeto($paramCondicao = , $paramOrderBy = marca_desc){ //instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco(); //seta os valores para passar por parmetro $tabela = marcas; $campos = marca_cod, marca_desc;

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

132

$condicao = $paramCondicao; //pega a lista de registros $resultado = $acessoBanco->selectRegistro($tabela, $campos, $condicao, $paramOrderBy); //gera a lista de objetos $lista = self::geraArrayObjeto($resultado); //destroi objeto unset($acessoBanco); return $lista; }

//mtodo que recebe um array de registros e retorna um array de objetos private static function geraArrayObjeto($paramLista){ $i = 0; $marcas = array(); foreach ($paramLista as $indiceArray => $array) { //instancia o objeto $marca = new Marca(); $marca->setCod($array[marca_cod]); $marca->setDesc($array[marca_desc]); $marcas[$i] = $marca;

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

133

$i++; } return $marcas; } //retorna um objeto public static function getObjeto($paramCod){ //instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco(); //seta os valores para passar por parmetro $tabela = marcas; $campos = marca_cod, marca_desc; $condicao = marca_cod = . $paramCod; //pega a lista de registros Categoria $resultado $campos, $condicao); $marca = ; //verifica se retornou um resultado if(sizeof($resultado)>0){ $marca = new Marca(); $marca->setCod($resultado[0][marca_cod]); $marca->setDesc($resultado[0][marca_desc]); } = $acessoBanco->selectRegistro($tabela,

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

134

//destroi objeto unset($acessoBanco); return $marca; }

public static function alterObjeto(&$Objeto){ //instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco(); //seta os valores para passar por parmetro $tabela = marcas; $campos = marca_desc = . $Objeto->getDesc() . ; $condicao = marca_cod = . $Objeto->getCod(); //altera o Banco de Dados $resultado $campos, $condicao); //destroi objeto unset($acessoBanco); } //altera o objeto public static function addObjeto(&$Objeto){ = $acessoBanco->updateRegistro($tabela,

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

135

//instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco(); //seta os valores para passar por parmetro $tabela = marcas; $campos = marca_cod, marca_desc; $valor = $Objeto->getCod() . , . $Objeto->getDesc() . ; //altera o Banco de Dados $resultado $campos, $valor); //destroi objeto unset($acessoBanco); } //deleta o objeto public static function delObjeto(&$Objeto){ //instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco(); //seta os valores para passar por parmetro $tabela = marcas; $condicao = marca_cod = . $Objeto->getCod(); //altera o Banco de Dados $resultado $condicao); = $acessoBanco->deleteRegistro($tabela, = $acessoBanco->insertRegistro($tabela,

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

136

//destroi objeto unset($acessoBanco); } } ?> 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 especficos para a manipulao dos dados da tabela: Marcas do banco de dados revenda. Analisando o cdigo fonte da classe, identificamos 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 especfico da tabela por meio da chave primria campo que identifica 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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. Verifique 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. Classe Bean class.modelo.php <?php class Modelo{ //atributos private $cod; private $desc; private $marca_cod; //mtodo construtor da classe public function Modelo(){ $this->cod = 0; $this->desc = ; $this->marca_cod = 0; } //mtodos da classe //cod public function setCod($paramCod){ $this->cod = $paramCod;

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

138

} public function getCod(){ return $this->cod; } //desc public function setDesc($paramDesc){ $this->desc = $paramDesc; } public function getDesc(){ return $this->desc; } //marca_cod public function setMarcaCod($paramMarcaCod){ $this->marca_cod = $paramMarcaCod; } public function getMarcaCod(){ return $this->marca_cod; } } ?> Classe Regra de Negcio: class.modeloRN.php <?php // inclusoo do arquivo de classe Modelo require_once(class.modelo.php);

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

139

//inclui o arquivo da classe AcessoBanco require_once(class.acessobanco.php); class ModeloRN{

//retorna uma lista de objetos modelo public static function getListaObjeto($paramCondicao = , $paramOrderBy = mod_desc){ //instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco(); //seta os valores para passar por parmetro $tabela = modelos; $campos = mod_cod, mod_desc, marca_cod; $condicao = $paramCondicao; //pega a lista de registros $resultado = $acessoBanco->selectRegistro($tabela, $campos, $condicao, $paramOrderBy); //gera a lista de objetos $lista = self::geraArrayObjeto($resultado); //destroi objeto unset($acessoBanco); return $lista; }

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

140

//mtodo que recebe um array de registros e retorna um array de objetos private static function geraArrayObjeto($paramLista){ $i = 0; $modelos = array(); foreach ($paramLista as $indiceArray => $array) { //instancia o objeto $modelo = new modelo(); $modelo->setCod($array[mod_cod]); $modelo->setDesc($array[mod_desc]); $modelo->setMarcaCod($array[marca_cod]); $modelos[$i] = $modelo; $i++; } return $modelos; } //retorna um objeto public static function getObjeto($paramCod){ //instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco(); //seta os valores para passar por parmetro $tabela = modelos;

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

141

$campos = mod_cod, mod_desc,marca_cod; $condicao = mod_cod = . $paramCod; //pega a lista de registros Categoria $resultado $campos, $condicao); $modelo = ; //verifica 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]); } //destroi objeto unset($acessoBanco); return $modelo; } = $acessoBanco->selectRegistro($tabela,

public static function alterObjeto(&$Objeto){ //instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco(); //seta os valores para passar por parmetro

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

142

$tabela = modelos; $campos = mod_desc = . $Objeto->getDesc() . .; $campos = marca_cod = . $Objeto->getMarcaCod() . ; $condicao = mod_cod = . $Objeto->getCod(); //altera o Banco de Dados $resultado $campos, $condicao); //destroi objeto unset($acessoBanco); } //altera o objeto public static function addObjeto(&$Objeto){ //instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco(); //seta os valores para passar por parmetro $tabela = modelos; $campos = mod_cod, mod_desc,marca_cod; $valor = $Objeto->getCod() . , . $Objeto->getDesc() . , . $Objeto->getMarcaCod() . ; //altera o Banco de Dados $resultado $campos, $valor); //destroi objeto = $acessoBanco->insertRegistro($tabela, = $acessoBanco->updateRegistro($tabela,

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

143

unset($acessoBanco); } //deleta o objeto public static function delObjeto(&$Objeto){ //instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco(); //seta os valores para passar por parmetro $tabela = modelos; $condicao = mod_cod = . $Objeto->getCod(); //altera o Banco de Dados $resultado $condicao); //destroi objeto unset($acessoBanco); } } ?> Classe Bean: class.automovel.php <?php class Automovel{ = $acessoBanco->deleteRegistro($tabela,

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 $isufilm; 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;

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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->isufilm = 0; $this->limpadortraseiro = 0; $this->outros = 0; $this->vendido = 0; } //mtodos da classe //placa public function setPlaca($paramPlaca){ $this->placa = $paramPlaca; } public function getPlaca(){ return $this->placa; }

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

146

} //mod_cod public function setModCod($paramModCod){ $this->mod_cod = $paramModCod; } public function getModCod(){ return $this->mod_cod; } //ano public function setAno($paramAno){ $this->ano = $paramAno; } public function getAno(){ return $this->ano; } //preco public function setPreco($paramPreco){ $this->preco = $paramPreco; } public function getPreco(){ return $this->preco; } //cor public function setCor($paramCor){ $this->cor = $paramCor;

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

147

} public function getCor(){ return $this->cor; } //combustivel public function setCombustivel($paramCombustivel){ $this->combustivel = $paramCombustivel; } public function getCombustivel(){ return $this->combustivel; } //km public function setKm($paramKm){ $this->km = $paramKm; } public function getKm(){ return $this->km; } //arcondicionado public function setArCondicionado($paramArCondicionado){ $this->arcondicionado = $paramArCondicionado; } public function getArCondicionado(){ return $this->arcondicionado; }

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

148

//vidroeletrico public function setVidroEletrico($paramVidroEletrico){ $this->vidroeletrico = $paramVidroEletrico; } public function getVidroEletrico(){ return $this->vidroeletrico; } //vidroverde public function setVidroVerde($paramVidroVerde){ $this->vidroverde = $paramVidroVerde; } public function getVidroVerde(){ return $this->vidroverde; } //airbag public function setAirBag($paramAirBag){ $this->airbag = $paramAirBag; } public function getAirBag(){ return $this->airbag; } //travaeletrica public function setTravaEletrica($paramTravaEletrica){ $this->travaeletrica = $paramTravaEletrica; }

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

149

public function getTravaEletrica(){ return $this->travaeletrica; } //alarme public function setAlarme($paramAlarme){ $this->alarme = $paramAlarme; } public function getAlarme(){ return $this->alarme; } //desembacador public function setDesembacador($paramDesembacador){ $this->desembacador = $paramDesembacador; } public function getDesembacador(){ return $this->desembacador; } //rodaliga public function setRodaLiga($paramRodaLiga){ $this->rodaliga = $paramRodaLiga; } public function getRodaLiga(){ return $this->rodaliga; } //volantehidraulico

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

150

public function setVolanteHidraulico($paramVolanteHidrauli co){ $this->volantehidraulico = $paramVolanteHidraulico; } public function getVolanteHidraulico(){ return $this->volantehidraulico; } //arquente public function setArQuente($paramArQuente){ $this->arquente = $paramArQuente; } public function getArQuente(){ return $this->arquente; } //abs public function setAbs($paramAbs){ $this->abs = $paramAbs; } public function getAbs(){ return $this->abs; } //cambioaut public function setCambioAut($paramCambioAut){ $this->cambioaut = $paramCambioAut; }

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

151

public function getCambioAut(){ return $this->cambioaut; } //cdplayer public function setCdPlayer($paramCdPlayer){ $this->cdplayer = $paramCdPlayer; } public function getCdPlayer(){ return $this->cdplayer; } //isufilm public function setIsufilm($paramIsufilm){ $this->isufilm = $paramIsufilm; } public function getIsufilm(){ return $this->isufilm; } //limpadortraseiro public function setLimpadorTraseiro($paramLimpadorTraseiro ){ $this->limpadortraseiro = $paramLimpadorTraseiro; } public function getLimpadorTraseiro(){ return $this->limpadortraseiro; }

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

152

//outros public function setOutros($paramOutros){ $this->outros = $paramOutros; } public function getOutros(){ return $this->outros; } //vendido public function setVendido($paramVendido){ $this->vendido = $paramVendido; } public function getVendido(){ return $this->vendido; } } ?> Classe Regra de Negcio: class.automovelRN.php <?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{ //retorna uma lista de objetos automovel

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

153

public static function getListaObjeto($paramCondicao = , $paramOrderBy = aut_placa){ //instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco(); //seta os valores para passar por parmetro $tabela = automoveis; $campos $campos $campos = aut_placa,mod_cod,aut_ano,aut_preco,aut_ .= .= aut_vidroeletrico,aut_vidroverde,aut_ aut_rodaliga,aut_volantehidraulico,aut_ cor,aut_combustivel,aut_km,aut_arcondicionado,; airbag,aut_travaeletrica,aut_alarme,aut_desembacador,; arquente,aut_abs,aut_cambioaut,aut_cdplayer,aut_isufilm,; $campos .= aut_limpadortraseiro,aut_outros,aut_vendido; $condicao = $paramCondicao; //pega a lista de registros $resultado = $acessoBanco->selectRegistro($tabela, $campos, $condicao, $paramOrderBy); //gera a lista de objetos $lista = self::geraArrayObjeto($resultado); //destroi objeto unset($acessoBanco); return $lista; }

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

154

//mtodo que recebe um array de registros e retorna um array de objetos private static function geraArrayObjeto($paramLista){ $i = 0; $automovels = array(); foreach ($paramLista as $indiceArray => $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_arcondicionado]); $automovel->setVidroEletrico($array[aut_vidroeletrico]); $automovel->setVidroVerde($array[aut_vidroverde]); $automovel->setAirBag($array[aut_airbag]); $automovel->setTravaEletrica($array[aut_travaeletrica]); $automovel->setAlarme($array[aut_alarme]); $automovel>setDesembacador($array[aut_desembacador]); $automovel->setRodaLiga($array[aut_rodaliga]);

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

155

$automovel->setVolanteHidraulico($array[aut_ volantehidraulico]); $automovel->setArQuente($array[aut_arquente]); $automovel->setAbs($array[aut_abs]); $automovel->setCambioAut($array[aut_cambioaut]); $automovel->setCdPlayer($array[aut_cdplayer]); $automovel->setIsufilm($array[aut_isufilm]); $automovel->setLimpadorTraseiro($array[aut_ limpadortraseiro]); $automovel->setOutros($array[aut_outros]); $automovel->setVendido($array[aut_vendido]); $automovels[$i] = $automovel; $i++; } return $automovels; }

//retorna um objeto public static function getObjeto($paramCod){ //instancia o objeto AcessoBanco $acessoBanco = new AcessoBanco(); //seta os valores para passar por parmetro $tabela = automoveis; $campos

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

156

aut_placa,mod_cod,aut_ano,aut_preco,aut_cor,aut_ combustivel,aut_km,aut_arcondicionado,; $campos $campos .= .= aut_vidroeletrico,aut_vidroverde,aut_ aut_rodaliga,aut_volantehidraulico,aut_ airbag,aut_travaeletrica,aut_alarme,aut_desembacador,; arquente,aut_abs,aut_cambioaut,aut_cdplayer,aut_isufilm,; $campos .= aut_limpadortraseiro,aut_outros,aut_vendido; $condicao = aut_placa = . $paramCod; //pega a lista de registros Categoria $resultado $campos, $condicao); $automovel = ; //verifica se retornou um resultado 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]); = $acessoBanco->selectRegistro($tabela,

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

157

$automovel->setVidroEletrico($resultado[0][aut _vidroeletrico]); $automovel->setVidroVerde($resultado[0][aut_ vidroverde]); $automovel->setAirBag($resultado[0][aut_airbag]); $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->setIsufilm($resultado[0][aut_isufilm]); $automovel->setLimpadorTraseiro($resultado[0][aut_limpadortraseiro]); $automovel->setOutros($resultado[0][aut_outros]); $automovel->setVendido($resultado[0][aut_vendido]); }

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

158

//destroi objeto unset($acessoBanco); return $automovel; } } ?> 4 DESENVOLVENDO A INTERFACE COM O USURIO 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 verificar 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. Seguem os cdigos-fonte de cada pgina:

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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]; } $lista = MarcaRN::getListaObjeto(,);
SOCIESC - Sociedade Educacional de Santa Catarina

name=marca_cod

onChange=document. a Marca</op-

value=0>Selecione

Programao de Pgina WEB - PHP

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]; } $mod_cod=0; if(isset($_POST[mod_cod])){ $mod_cod = $_POST[mod_cod]; } print $condicao . <br>; $lista = ModeloRN::getListaObjeto($condicao ,); foreach($lista as $oModelo){ = marca_cod = . $_

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

161

?> <option Cod()?> <? value=<?=$oModelo->getselected: ($mod_cod==$oModelo->getCod())?print <? } ?> </select> </td> <td width=5%>&nbsp;</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> <?

print ; ?> ><?=$oModelo->getDesc()?></option>

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

162

}//foreach ?> </table> </td> </tr> </table> </form> </body> </html> Pgina: admin/marca_lst.php <? /* Indica que o arquivo no deve ficar em cache (fora o seu reprocessamento) */ require_once(classes/class.marcaRN.php); ?> <input name=btnNovo type=button value=Nova Marca 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>&nbsp;</td> </tr> <? $lista = MarcaRN::getListaObjeto(,); foreach($lista as $oMarca){

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

163

?> <tr> <td><?=$oMarca->getCod()?></td> <td><?=$oMarca->getDesc()?></td> <td><input name=btnAlterar type=button value=Alterar </tr> <? }//foreach ?> </table> <? //Libera objetos unset($lista); ?> Pgina: admin/marca_frm.php <? require_once(classes/class.marcaRN.php); // verifica se cadastro ou alterao if (isset($_GET[cod])){ // alterao $cod = $_GET[cod]; $oMarca = MarcaRN::getObjeto($cod); } else { // cadastro $cod = 0; $oMarca = new Marca(); } onClick=location.href=marca_frm. php?cod=<?=$oMarca->getCod()?> /></td>

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

164

$desc = $oMarca->getDesc(); //Libera objetos unset($oMarca); ?> <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: &nbsp;</ td> <td><input </tr> <tr> <td width=30% align=right>Descrio: &nbsp;</ td> <td><input </tr> <tr> <td width=30% align=right>&nbsp;</td> <td>&nbsp;</td> </tr> <tr> <td width=30%>&nbsp;</td> <td> <input name=btnSalvar type=Submit value=Salvar> <input name=btnCancelar type=button value=Cancelar onClick=location.href=marca_lst.php> <? if($cod > 0) { ?> name=desc type=text size=40 maxlength=100 value=<?=$desc?> /></td> name=cod type=text size=10 maxlength=5 value=<?=$cod?> /></td>

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

165

<input name=btnApagar type=Submit value=Apagar /> <? } ?> </td> </tr> </table> </form> Pgina: admin/marca_action.php <? require_once(classes/class.marcaRN.php); //Carrega ou cria objeto if (isset($_POST[cod])){ $cod = $_POST[cod]; $oMarca = MarcaRN::getObjeto($cod); } //variavel booleana que ir verificar se um novo registro $ehNovoRegistro = false; //caso no exista o objeto cria um novo objeto pois um novo registro if(empty($oMarca)){ $oMarca = new Marca(); $ehNovoRegistro = true; } //Verifica se foi clicado no boto apagar if ((isset($_POST[btnApagar])) if ($cod > 0){ MarcaRN::delObjeto($oMarca); && ($_POST[btnApagar] == Apagar)){

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

166

} }else{ $oMarca->setCod($_POST[cod]); $oMarca->setDesc($_POST[desc]); if ($ehNovoRegistro){ // adiciona o registro MarcaRN::addObjeto($oMarca); } else { //altera o registro MarcaRN::alterObjeto($oMarca); } } unset($oMarca); 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 verifique o exemplo que desenvolvemos. Ainda na administrao podero ser desenvolvidas as telas de manuteno das outras tabelas do banco de dados, isso dar bastante flexibilidade para os mantenedores da aplicao.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 profissional que est atualizado com este tipo de tecnologia. Portanto, imprescindvel que os profissionais de informtica, tenham conhecimento bsico da programao para a Internet. Este conhecimento ir possibilitar ao profissional 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.

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

168

Respostas dos Exerccios Aula 1 1) C 2) D 3) C 4) D 5) A, C Aula 2 1) C 2) A 3) B 4) A,C 5) B,D 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

169

Aula 5 1) A,C,D 2) C 3) B 4) A,C 5) C,D Aula 6 1) A,C,D 2) B 3) B 4) C 5) A,B,C 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
SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

170

Public function adicao($numero1, $numero2){ $this->resultado = $numero1 + $numero2; return $this->resultado; }

// 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; }

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 especificamos 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> <? //verifica se existe a varivel de navegador numero1 if(isset($_POST[numero1])){ //cria novas variveis com base nas variveis de navegador $num1 = $_POST[numero1]; $num2 = $_POST[numero2]; //verifica se as variveis possuem valor diferente de vazio if(!empty($num1) && !empty($num2)){

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

172

//inclui o arquivo que possui a estrutura da classe para permitir a criao //do objeto require_once(class.operacao.php); //cria o objeto $objOperacao = new Operacao(); // 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

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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); //seleciona o banco de dados revenda mysql_db_query(revenda,$conexao);

//apaga todos os registros da tabela marcas mysql_query(DELETE FROM marcas);

//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>; }

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

174

print Alterao de Registro<br><br>; //altera o registro 3 da tabela mysql_query(UPDATE marcas SET marca_desc = Pegeout WHERE marca_cod = 3); print Mostra os registros novamente<br><br>; //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>; } ?> </BODY> </HTML>

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

175

REFERNCIAS BIBLIOGRFICAS 1. CONVERSE, Tim; PARK, Joyce. PHP A Bblia. So Paulo: Campus / Elsevier, 2003. 2. WIKIPDIA, a enciclopdia livre. Artigos Eletrnicos. Disponvel em: http:// pt.wikipedia.org/ 3. Internet World Stats. Disponvel em: http://www.internetworldstats.com/

SOCIESC - Sociedade Educacional de Santa Catarina

Programao de Pgina WEB - PHP

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 catalogrfica 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 Grfico 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 Grfico Equipe Tupy Virtual Reviso Ortogrfica Ndia Ftima de Oliveira

EQUIPE TUPY VIRTUAL Raimundo Nonato Gonalves Robert Wilson Jos Mafra Thiago Vedoi de Lima Cristiane Oliveira

SOCIESC - Sociedade Educacional de Santa Catarina