Anda di halaman 1dari 29

Curso PHP 5

Instrutores:
Carlos Rebecchi
Danielle Santos

Belo Horizonte
2014

Sumrio

Introduo ................................................................................................................................................................. 3

PHP ........................................................................................................................................................................... 3
3.1

Sintaxe bsica .................................................................................................................................................... 4

3.2

Documentao .................................................................................................................................................. 4

3.3

Conceito de variveis ........................................................................................................................................ 4

3.3.1

Tipos de dados .......................................................................................................................................... 4

3.3.2

Constantes ................................................................................................................................................ 5

3.3.3

Operadores ............................................................................................................................................... 6

3.3.4

Operadores lgicos ................................................................................................................................... 6

3.4

3.4.1

If / Else....................................................................................................................................................... 6

3.4.2

Switch ........................................................................................................................................................ 7

3.5

Arrays ................................................................................................................................................................ 7

3.5.1

Arrays Associativos.................................................................................................................................... 8

3.5.2

Arrays Multidimensionais (Matrizes) ........................................................................................................ 9

3.6

Estruturas de Repetio .................................................................................................................................... 9

3.6.1

For ........................................................................................................................................................... 10

3.6.2

While ....................................................................................................................................................... 10

3.6.3

Do-While ................................................................................................................................................. 10

3.6.4

Foreach.................................................................................................................................................... 10

3.7

Include e Require ............................................................................................................................................ 11

3.8

Funes ........................................................................................................................................................... 12

3.8.1

Funes nativas ....................................................................................................................................... 12

3.8.2

Construindo uma funo......................................................................................................................... 12

3.8.3

Funo dentro de funo ........................................................................................................................ 13

3.9

Fluxos de Controle ............................................................................................................................................ 6

Classes e Objetos ............................................................................................................................................ 14

3.9.1

Nome da classe ....................................................................................................................................... 14

3.9.2

Atributos ................................................................................................................................................. 14

3.9.3

Mtodos .................................................................................................................................................. 15

3.9.4

Criando Classes ....................................................................................................................................... 15

3.9.5

Instanciando Objetos .............................................................................................................................. 15

3.9.6

Herana ................................................................................................................................................... 16

3.9.7

Encapsulamento...................................................................................................................................... 17

3.9.8

Polimorfismo ........................................................................................................................................... 20

Banco de dados ....................................................................................................................................................... 22


4.1

MySQL (Gerenciador de Banco de Dados) ...................................................................................................... 22


1

Universidade Corporativa Prodemge 2014

4.2

Conexo com Banco de Dados ........................................................................................................................ 22

4.2.1

Instalao XAMPP ou WAMP .................................................................................................................. 23

4.2.2

Funcionamento dos servidores ............................................................................................................... 23

4.2.3

PHPMyAdmin .......................................................................................................................................... 23

4.3

GET e POST ...................................................................................................................................................... 24

4.3.1

GET .......................................................................................................................................................... 24

4.3.2

POST ........................................................................................................................................................ 25

4.4

Formulrio ....................................................................................................................................................... 25

4.4.1
5

Salvando e listando dados do formulrio ............................................................................................... 25

Referncias .............................................................................................................................................................. 28

2
Universidade Corporativa Prodemge 2014

Curso PHP
2

Introduo

Esta apostila tem como objetivo apresentar a linguagem de programao chamada PHP, sigla recursiva que significa
Hypertext Prepocessor. O PHP possui cdigo-fonte aberto e uma linguagem de servidor muito utilizada para criao
de websites dinmicos e aplicaes web.

PHP

O PHP focado para ser uma linguagem de script do lado do servidor, portanto, voc pode fazer qualquer coisa que
outro programa CGI pode fazer, como: avaliar dados de formulrios enviados por um navegador, criar contedo web
personalizado para o navegador, conversar com um banco de dados, e at mesmo enviar e receber cookies. "E da?",
voc pode dizer. "Posso fazer isso com Java Script." E verdade! Mas o conhecimento de Java Script pode ser
limitado.
Java Script geralmente executado no navegador, ou cliente. Isso significa que ele s sabe o que est acontecendo
realmente no seu navegador, e sobre as informaes que ele obtm dos websites aos quais voc est conectado.
PHP, por outro lado, executado no mesmo computador que o website que voc est visitando, que conhecido como
servidor. Isso significa que ele tem acesso a toda a informao e a todos os arquivos naquela mquina, o que o permite
construir pginas HTML personalizadas para enviar ao seu navegador, manusear cookies, e executar tarefas ou
realizar clculos com dados obtidos a partir do website.
Esses so os maiores campos onde os scripts PHP podem ser utilizados:
Script no lado do servidor (server-side): Este o mais tradicional e principal campo de atuao do PHP. Voc
precisa de trs coisas para seu trabalho. O interpretador do PHP (como CGI ou mdulo), um servidor web e
um browser. Basta rodar o servidor web conectado a um PHP instalado. Voc pode acessar os resultados de
seu programa PHP com um browser, visualizando a pgina PHP atravs do servidor web.
Script de linha de comando: Voc pode fazer um script PHP funcionar sem um servidor web ou browser. A
nica coisa necessria o interpretador. Esse tipo de uso ideal para script executados usando o cron ou o
Agendador de Tarefas (no Windows). Esses scripts podem ser usados tambm para rotinas de processamento
de texto.
Escrevendo aplicaes GUI no lado do cliente (client-side): O PHP no (provavelmente) a melhor
linguagem para produo de aplicaes com interfaces em janelas, mas o PHP faz isso muito bem, e se voc
deseja usar alguns recursos avanados do PHP em aplicaes no lado do cliente poder utilizar o PHP-GTK
para escrever esses programas. E programas escritos desta forma ainda sero independentes de plataforma. O
3
Universidade Corporativa Prodemge 2014

PHP-GTK uma extenso do PHP, no disponvel na distribuio oficial. Se voc est interessado no PHPGTK, visite o site http://gtk.php.net.

3.1 Sintaxe bsica


Tags especiais indicam ao PHP onde esto os blocos de cdigo. A tag de abertura formada por um sinal de menor
que (<), um sinal de interrogao (?) e a sigla php. A tag de fechamento formada por um ponto interrogao (?) e
sinal de maior que (>). Exemplo:
<?php
...
?>
Monte o exemplo abaixo:

Explicando, criamos as variveis a e b e atribumos a ela um valor, sendo 10 e 15 respectivamente, depois criamos
a varivel c e definimos a ela a soma de a e b, ou seja, 25. Logo aps, escrevemos isso em tela com o comando
echo. Podemos adicionar no somente comandos como tambm comentrios no cdigo utilizando /* e */, para
comentrio em bloco e //, para comentrio de apenas uma linha.

3.2 Documentao
Assim como o PHP GTK, as outras verses do PHP (PHP 4, PHP 5, etc.) tambm possuem documentao ou como
comumente chamado, manuais, disponveis on-line em vrios idiomas. Para maior conhecimento da linguagem, estes
manuais so indispensveis e esto disponveis em http://php.net.

3.3 Conceito de variveis


Variveis armazenam valores. Pode-se referir a variveis para obter seu valor ou para alterar seu contedo. No PHP
elas so representadas por um cifro ($) mais o nome da varivel. Os nomes de variveis vlidos so iniciados por
letras ou por um subscrito (_). Existe diferenciao entre nomes de variveis maisculas e minsculas. Quando a
varivel declarada dentro de uma funo, ela s estar disponvel para o cdigo desta funo.
3.3.1

Tipos de dados

Cada varivel possui um tipo de dado. O PHP suporta vrios tipos de dados:
Inteiros Nmeros inteiros (isto , nmeros sem ponto decimal);
Nmeros de dupla preciso Nmeros reais (isto , nmeros que contm um ponto decimal);
String Texto entre aspas simples ( ) ou duplas ( );
Booleanos Armazenam valores verdadeiros ou falsos, usados em testes de condies;
4
Universidade Corporativa Prodemge 2014

Array Grupo de elementos do mesmo tipo;


Objeto Grupo de atributos e mtodos;
Recurso Uma origem de dados externa;
Nulo Nenhum valor.

3.3.2

Constantes

Constantes so identificadores para valores simples. O seu contedo no muda durante a execuo do cdigo. Elas so
criadas com a funo define e, por conveno, so escritas com letras maisculas e no usam o cifro no incio.

5
Universidade Corporativa Prodemge 2014

3.3.3

Operadores

So usados para efetuarem operaes sobre as variveis e constantes. Os operadores do PHP so:
+ soma
- subtrao
* multiplicao
/ diviso
^ exponenciao
% mdulo, resto da diviso
++ acrescenta um a uma varivel
-- subtrai um de uma varivel
+= soma um valor a uma varivel e lhe atribui o resultado
3.3.4

Operadores lgicos

and ou && operador lgico e, apenas retornando verdadeiro quando as duas condies envolvidas no teste forem
verdadeiras.
or ou | | operador lgico ou, retornando verdadeiro quando uma ou as duas condies envolvidas no teste forem
verdadeiras.
! operador lgico no, invertendo o resultado de um teste.
xor operador lgico ou exclusivo que determina se uma de duas condies verdadeira mas no ambas. Se ambas
forem verdadeiras, o teste final ser falso.

3.4 Fluxos de Controle


Fluxo de controle como um programa decide realizar uma ao ao invs de outra.
Para que haja essa ao, realizamos comparaes para saber se a resposta da condio (caso a ser verificado) true
(verdadeira) ou false (falsa), podendo usar os seguintes operadores de comparao:
> Maior que
< Menor que
<= Menor ou igual
>= Maior ou igual
== Igual
!= Diferente
3.4.1

If / Else

Uma estrutura if composta pela palavra reservada if, uma condio e um par de chaves { }. Se a resposta condio
for true, verdadeira, o cdigo dentro das chaves ser executado.

Alm realizar alguma ao quando a condio true, podemos realizar alguma ao se a condio for falsa, false.
Podemos fazer isso usando uma instruo if / else:

6
Universidade Corporativa Prodemge 2014

Assim como antes, se a condio verdadeira, ento somente o cdigo dentro do primeiro par de chaves ser
executado. Caso contrrio, a condio falsa, ento somente o cdigo dentro do segundo par de chaves, depois da
palavra reservada else, ser executado.
3.4.2

Switch

A instruo switch nos permite realizar operaes de fluxo de controle mais complexas sem usar uma infinidade de
ifs e elses encadeados. Forma de testar uma dentre vrias possibilidades. A declarao default executa caso
nenhuma das opes for verdadeira. A declarao break faz com que o restante do cdigo no seja executado caso o
teste seja verdadeiro.

VAMOS PRATICAR
1. Inicie uma tag PHP, crie as variveis: nome, sobrenome, idade, peso e endereo.
2. Preencha as variveis criadas com seus dados.
3. Crie uma condio que imprima a mensagem J sou experiente! se voc tem mais que 60 anos, caso
contrrio imprima Estou em fase de aprendizagem!.

3.5 Arrays
Arrays nos permite armazenar listas de informaes em uma nica varivel. Arrays em PHP podem ser observados
como mapeamentos ou como vetores indexados. Mais precisamente, um valor do tipo array um dicionrio onde os
ndices so as chaves de acesso. Vale ressaltar que os ndices podem ser valores de qualquer tipo e no somente
inteiros. Inclusive, se os ndices forem todos inteiros, estes no precisam formar um intervalo contnuo. Como a
7
Universidade Corporativa Prodemge 2014

checagem de tipos em PHP dinmica, valores de tipos diferentes podem ser usados como ndices de array, assim
como os valores mapeados tambm podem ser de diversos tipos.
Exemplo:

Equivalentemente, pode-se escrever:

3.5.1

Arrays Associativos

Uma caracterstica bem interessante dos arrays em PHP a capacidade de fazer associaes.
Quando nos referimos a associaes, queremos dizer que, ao invs de usarmos nmeros como ndices, podemos usar
strings (nomes). Dessa forma, fica muito mais simples e intuitivo obter um valor de um array, pois nomes fazem mais
sentido do que nmeros.
Para usarmos o array associativo basta apenas substituir o nmero do ndice por uma string. Veja o exemplo abaixo.

Caso queiramos inicializar o array diretamente usando associaes, devemos usar seta larga para vincular um valor a
uma chave.
A seta larga composta pelo sinal de igual mais o sinal de maior (=>). Veja o mesmo cdigo usando as setas largas
diretamente na associao.

8
Universidade Corporativa Prodemge 2014

3.5.2

Arrays Multidimensionais (Matrizes)

PHP tambm possibilita o uso de matrizes que so arrays que contm outros arrays dentro dele. Ou seja, em cada
posio de um array, possui outro array. Dessa forma nosso array pode ser bidimensional (2D), tridimensional (3D) e
assim por diante.
Quando utilizamos arrays multidimensionais (matrizes) existem mais ndices numa mesma varivel.
Exemplos:
Array comum: $vetor []
Array bidimensional: $vetor [][]
Array tridimensional: $vetor [][][] e assim por diante.
Os ndices de um array multidimensional seguem as mesmas caractersticas dos ndices vistos at agora, podendo ser
tanto numrico como associativo. O exemplo abaixo toma como base o exemplo anterior, porm, iremos criar uma
matriz para que haja mais de uma pessoa cadastrada.

VAMOS PRATICAR
1. Crie um array chamado paises.
2. Preencha o array criado com 5 paises de sua preferencia.
3. Crie um novo array multidimensional chamado lugares.
4. Este array ser preenchido da seguinte forma: adicione 3 pases, cada pas ter duas caractersticas, cor (uma
cor existente na bandeira do pas) e cidade (uma cidade famosa do pas).

3.6 Estruturas de Repetio


9
Universidade Corporativa Prodemge 2014

3.6.1

For

Estrutura de looping que executa um bloco de cdigo quantas vezes for indicado em uma varivel. Deve-se definir a
varivel que ser testada no looping, uma condio de teste e o incremento (ou decremento) da varivel de controle.

3.6.2

While

Estrutura de looping que no necessita de um nmero determinado de iteraes. Ele executado enquanto uma
condio for verdadeira.

3.6.3

Do-While

Outra forma de looping que executa um bloco de cdigo testa uma condio e repete novamente o bloco de cdigo (ou
no).

3.6.4

Foreach

O foreach uma simplificao do operador for para se trabalhar em colees de dados, ou seja, vetores e matrizes. Ele
permite acessar cada elemento individualmente iterando sobre toda a coleo e sem a necessidade de informao de
ndices.
Por exemplo, supondo que fosse preciso percorrer um vetor com alguns elementos com o for. Seria necessrio utilizar
um contador para servir tambm de ndice para acessar cada elemento, conforme a listagem a seguir.
Iterao em vetor com FOR:
10
Universidade Corporativa Prodemge 2014

Esse cdigo poderia ser simplificado com a utilizao do operador foreach, como mostrado abaixo:

Assim, a cada iterao (repetio) a varivel $item representa um elemento do vetor.


No foreach h a possibilidade de obter a referncia do array usando a sintaxe foreach ($arr as $key => $value)

Assim ser impresso:


Chave: 1; Valor: um;
Chave: 2; Valor: dois;
Chave: 3; Valor: trs;

3.7 Include e Require


O PHP nos contempla com algumas formas de inserir um bloco de cdigo de script PHP ou um arquivo externo que
desejamos incluir no nosso projeto. Sendo elas:
include(): Include tenta incluir um bloco de cdigo PHP. Caso falhe, o script retorna um warning (aviso) e
prossegue com a execuo do script. Pode ser utilizado em uma estrutura de condicionais que ter seu efeito
perpetuado todas as vezes que for chamado.
require(): Require tenta incluir uma pgina. Caso falhe, o script retorna um fatal error (erro fatal) e aborta a
execuo do script. No recomendvel que se utilize em estruturas condicionais, a menos que se deseje o
seu efeito, de ser executada apenas uma vez.
include_once() & require_once(): Semelhante as suas funes originais com a nica diferena que se o
arquivo referenciado j foi incluso na pgina anteriormente, a funo retorna false e o arquivo no
includo.
Uma boa aplicao dessas funes a incluso do arquivo de conexo com o banco de dados. No precisamos ficar
incluindo em todas as pginas de nossos projetos as linhas de cdigo para conexo com o BD. Imaginem caso ocorra
alterao nas conexes do banco, precisaremos abrir todos os arquivos do projeto para alterar as devidas conexes.
Com isso realizamos a incluso nas pginas do arquivo de conexo. Logo, em caso de manuteno s alterar o
arquivo de origem.
11
Universidade Corporativa Prodemge 2014

3.8 Funes
Funes so trechos reutilizveis de cdigo que podemos usar para poupar um monte de comandos desnecessrios e
deixar nossos programas e aplicaes mais eficientes.
3.8.1

Funes nativas

O PHP possui mais de 700 funes nativas, ou seja, funes prontas para serem utilizadas. No decorrer do curso
veremos algumas delas e os restantes esto disponveis em http://php.net/.
Temos vrias funes nativas para diferentes necessidades, como:

3.8.2

Construindo uma funo

Alm, das funes nativas, o PHP nos permite definir nossas prprias funes.
A sintaxe bsica para definir uma funo :
function nome_da_funo ([arg1, arg2, arg3]) {
Comandos;
12
Universidade Corporativa Prodemge 2014

... ;
[return <valor de retorno>];
}
Qualquer cdigo PHP vlido pode estar contido no interior de uma funo. Como a checagem de tipos em PHP
dinmica, o tipo de retorno no deve ser declarado, sendo necessrio que o programador esteja atento para que a
funo retorne o tipo desejado. recomendvel que esteja tudo bem documentado para facilitar a leitura e
compreenso do cdigo. Para efeito de documentao, utiliza-se o seguinte formato de declarao de funo:
tipo_funcao function nome_da_funcao (tipo arg1, tipo arg2, ...);
Este formato s deve ser utilizado na documentao do script, pois o PHP no aceita a declarao de tipos. Isso
significa que em muitos casos o programador deve estar atento aos tipos dos valores passados como parmetros, pois
se no for passado o tipo esperado no emitido nenhum alerta pelo interpretador PHP, j que este no testa os tipos.

Os tipos so usados tanto para funes quanto para variveis, sendo eles:
public - torna uma varivel/funo disponvel a partir de qualquer lado, mesmo outras classes e instncias do
objeto.
private - quando queremos que uma varivel/funo esteja visvel apenas dentro da sua prpria classe.
protected - quando queremos que uma varivel/funo esteja visvel em todas as classes que estendem a classe
atual, incluindo classes pai.

3.8.3

Funo dentro de funo

Uma facilidade que a linguagem PHP permite que podemos passar como parmetro de uma funo o retorno de
outra funo como no exemplo a segui.
Exemplo:

13
Universidade Corporativa Prodemge 2014

A chamada de funo acima ir imprimir 40, pois a funcao_numero_um recebe um valor como parmetro e retorna
o valor multiplicado por dois, a funcao_numero_dois recebe como parmetro o retorno multiplicado e retorna esse
valor multiplicado por dois e mostrado na tela.
VAMOS PRATICAR
1. Crie as seguintes funes:
A. Dado um nmero inteiro positivo n, calcular a soma dos n primeiros nmeros inteiros positivos.
B. Dada uma sequncia de nmeros inteiros no nulos, seguida por 0, imprimir seus quadrados.
C. Dado um nmero inteiro positivo n, imprimir os n primeiros naturais mpares.
Exemplo: Para n = 4 a sada dever ser 1, 3, 5, 7...

3.9 Classes e Objetos


Objetos so combinaes de dados (variveis) e aes (funes). Objetos PHP so instncias de classes, uma classe
um gabarito para a definio de objetos. Atravs da definio de uma classe, descreve-se que propriedades ou
atributos o objeto ter.
Alm da especificao de atributos, a definio de uma classe descreve tambm qual o comportamento de objetos da
classe, ou seja, que funcionalidades podem ser aplicadas a objetos da classe. Essas funcionalidades so descritas
atravs de mtodos. Um mtodo nada mais que o equivalente a um procedimento ou funo, com a restrio que ele
manipula apenas suas variveis locais e os atributos que foram definidos para a classe.
Em UML (Unified Modeling Language), a representao para uma classe no diagrama de classes :

A especificao de uma classe composta por trs regies, nome da classe, atributos e mtodos.
3.9.1

Nome da classe

Um identificador para a classe, que permite referenci-la posteriormente, por exemplo, no momento da criao de um
objeto.
3.9.2

Atributos
14

Universidade Corporativa Prodemge 2014

O conjunto de propriedades da classe. Para cada propriedade, especifica-se:


nome: um identificador para o atributo.
tipo: o tipo do atributo (inteiro, real, carter, etc.)
valor_default: opcionalmente, pode-se especificar um valor inicial para o atributo.
visibilidade: opcionalmente, pode-se especificar o quo acessvel um atributo de um objeto a partir de outros
objetos. Valores possveis so:
- (privativo), nenhuma visibilidade externa;
+ (pblico), visibilidade externa total; e
# (protegido), visibilidade externa limitada.
3.9.3

Mtodos

O conjunto de funcionalidades da classe. Para cada mtodo, especifica-se sua assinatura, composta por:
nome: um identificador para o mtodo.
tipo: quando o mtodo tem um valor de retorno, o tipo desse valor.
lista de argumentos: quando o mtodo recebe parmetros para sua execuo, o tipo e um identificador para
cada parmetro.
visibilidade: como para atributos, define o quo visvel um mtodo a partir de objetos de outros classes.
As tcnicas de programao orientada a objetos recomendam que a estrutura de um objeto e a implementao de seus
mtodos devem ser to privativos como possvel. Normalmente, os atributos de um objeto no devem ser visveis
externamente. Da mesma forma, de um mtodo deve ser suficiente conhecer apenas sua especificao, sem
necessidade de saber detalhes de como a funcionalidade que ele executa implementada.
3.9.4

Criando Classes

A criao de uma classe simples como podemos ver a seguir:

3.9.5

Instanciando Objetos

Em programao orientada a objetos, a palavra "instanciar" significa criar. A instncia objeto criado com base em
uma classe definida.
Conceitualmente, a instncia possui duas propriedades fundamentais: a classe a partir da qual foi criado, que define
suas propriedades e mtodos padro, e um estado, que representa o conjunto de valores das propriedades e mtodos
definidos naquela instncia especfica. A instncia possui um ciclo de vida: criada (e neste momento seu construtor
invocado), manipulada conforme necessrio, e destruda quando no for mais til para o programa. O estado da
instncia evolui ao longo do seu ciclo de vida: seus atributos so definidos e tm seu valor alterado atravs de seus
mtodos e de manipulao realizada por outros objetos.

15
Universidade Corporativa Prodemge 2014

3.9.6

Herana

Herana em orientao a objeto pode ser entendida como um mecanismo que permite construir uma nova classe com
base em uma classe previamente existente, em que a nova classe herda automaticamente todos os atributos,
comportamentos e implementaes da classe-pai.
A herana, podemos reutilizar partes de cdigo j definidas, alm da agilidade, ela elimina a necessidade de duplicar
ou rescrever certo cdigo. Essas caractersticas nos permitem ao invs de escrevermos uma estrutura totalmente nova,
reaproveitar a estrutura existente mesmo que a mesma nos fornea apenas uma base abstrata para o desenvolvimento.
Para estender uma nova classe (chamaremos de subclasse), utilizamos a palavra reservada extends. Quando criamos
uma subclasse, todos os mtodos pertencentes a classe pai podem ser executados. Tambm possvel sobrescrever os
seus mtodos e propriedades, a fim de criar novos, com outras caractersticas. Se na subclasse escrito um mtodo
com o mesmo nome do mtodo existente na classe pai, passa a vigorar o mtodo da classe filha subclasse.
importante destacar que somente os mtodos protect e public podem ser reescritos.
Nada melhor que um exemplo para facilitar o entendimento por isso, vamos retornar a nossa classe pessoa e a partir
dela criaremos a classe funcionrio, pois o funcionrio uma pessoa, consequentemente, funcionrio herdar as
caractersticas da classe pessoa, ao invs de duplicarmos tudo de novo na classe funcionrio.

16
Universidade Corporativa Prodemge 2014

Nota que a ClasseFilho herda o mtodo reajustarSalario automaticamente da ClassePai e usa-o no mtodo
somarSalarioComReajuste.
3.9.7

Encapsulamento

O Encapsulamento serve para controlar o acesso aos atributos e mtodos de uma classe. uma forma eficiente de
proteger os dados manipulados dentro da classe, alm de determinar onde esta classe poder ser manipulada.
Elementos public so utilizados em variveis e mtodos universais, onde no h problema nem necessidade de
segurana daquele dado. Exemplo: horas, constantes, variveis globais, nome do programa ou da empresa etc.
Diferente dos elementos public, os private ou privado so informaes 'escondidas', ou no mnimo controladas. Por
exemplo, bem comum ver todas as variveis de uma classe definidas como private, e usar mtodos public do tipo
set, para dar um valor a esta varivel. Isso tudo tem um motivo: variveis private no podem ser acessadas nem por
suas subclasses.
O protected ou protegido pra quando no queremos deixar um atributo ou mtodo pblico, livre para todos. Porm,
voc quer compartilhar ele com as subclasses. O protected um intermedirio entre public e private. Como se fosse
um segredo de famlia (subclasses). Para todas as outras classes, atributos protected so invisveis, ou seja, estamos
protegendo do acesso externo.
A seguir trs exemplos usando Public, Private e Protected:
Public
Neste exemplo podemos ver atributos e mtodos pblicos na classe TesteEncapsulamento onde os mesmos
podero ser acessados em qualquer cdigo PHP que importe esta classe que esta no arquivo
TesteEncapsulamento.php, como veremos no index.php abaixo.

17
Universidade Corporativa Prodemge 2014

Private
O modelo usando private demonstra que atributos e mtodos que so privados no podero ser usados por
classes herdadas e nem por instancias do objeto que tenha mtodos privados, como mostrado no exemplo
abaixo. Nota que h dois casos de erro no cdigo abaixo por ser tentar utilizar mtodos privados em uma
instncia.

18
Universidade Corporativa Prodemge 2014

Protected
Notamos no exemplo abaixo que possvel usar mtodos e atributos protegidos somente em sua herana. A
classe TesteHerancaComEncapsulamento herda os mtodos e atributos de sua classe me
TesteEncapsulamento. Para que possamos usar os mtodos protegidos em uma instncia de classe. Pois uma
instancia de classe no poder usar os mtodos protegidos da classe me, por isso a classe filha ir herdar os
dados protegidos e repassa-la de forma publica para suas instncias.

19
Universidade Corporativa Prodemge 2014

3.9.8

Polimorfismo

O Polimorfismo a existncia de uma espcie sob vrias formas. um artefato simples, mas seu entendimento
muito importante na orientao a objetos. Pois podemos derivar classes de uma mesma superclasse e utilizar mtodos
iguais, porm com comportamentos diferentes. Veja o exemplo:

20
Universidade Corporativa Prodemge 2014

Repare h 2 arquivos diferentes onde a classe Calculo2 est herdando as caractersticas da classe Calculo1. Com
isso h a possibilidade de receber as resposta de Calculo1 (dividindo) e Calculo2 (somando) criando apenas o
objeto da classe Calculo2:

Mas digamos que no calculo 2 haja a necessidade de ter outra uma outra funo dividir (4 por 2) que ser especfica
apenas na determinada aplicao Calculo2 sem a necessidade de alterar a classe pai Calculo1.

Dessa forma ser demonstrado o funcionamento do polimorfismo. Quando for executado o mtodo $calculo->
dividir() o PHP ir procurar dentro da classe Calculo2 a funo dividir e, encontrando, executa a diviso 4/2 e, se
ela no existir, ele ir executar a outra funo dividir 10/2, que est dentro do arquivo Calculo1.php. Teoricamente
21
Universidade Corporativa Prodemge 2014

poderamos encontrar algum problema ao estender uma classe da outra e utilizar duas funes com o mesmo nome,
mas exatamente o contrrio que o polimorfismo nos permite fazer.

Banco de dados

O ponto de partida para a criao de uma aplicao termos um banco de dados. Podemos usar vrios tipos de banco
de dados; IBM DB2 (IBM DB2, Cloudscape and Apache Derby), Mssql (Microsoft SQL Server), MySQL (MySQL
Drivers and Plugins), SQL Oracle, etc.
O melhor banco de dados a ser usado no nosso caso o MySql.

4.1 MySQL (Gerenciador de Banco de Dados)


O MySQL o gerenciador de banco de dados mais usado com o PHP. Existem muitas funes pr-definidas para
manipulao de conexes com bancos de dados.
A funo mysql_connect tenta uma conexo com um servidor MySql. Deve-se passar como parmetros: o nome do
servidor (ou nmero IP) onde o MySQL est sendo executado, o nome de usurio e a senha deste usurio. O comando
alternativo die trata um possvel fracasso na conexo.
A funo mysql_select_db seleciona qual base ser selecionada dentro do banco de dados que foi conectado. O
comando alternativo die trata um possvel fracasso na seleo da base, podendo ser includa uma mensagem
customizada.

A funo mysql_query faz consultas base previamente selecionada. Devem-se passar, como parmetros, os
comandos SQL apropriados. Novamente, o comando alternativo die pode tratar um no sucesso na consulta.

Para podermos testar nossos cdigos em PHP necessria a utilizao de um servidor com suporte a PHP. Caso ainda
no possua um servio de hospedagem, ou caso seu servio de hospedagem no de suporte linguagem, voc pode
testar suas pginas em PHP em um servidor local. Vamos para dar andamento ao contedo da apostila usar o WAMP
Server, que um pacote que j instala para voc o servidor internet local com suporte a PHP e MySQL. Basta ir
clicando e avanando. Aps a instalao ser mostrado prximo ao relgio o cone de seu servidor web.

4.2 Conexo com Banco de Dados


Existe uma maneira de comear a utilizar PHP em Windows sem ter que sofrer as complicaes tpicas da instalao
dos servidores necessrios para programar em PHP. Temos disponvel todo o ambiente de desenvolvimento
empacotado e pronto para usar. Dentre as vrias solues desse tipo disponveis, destacam-se o WAMP, o XAMPP, o
EasyPHP, entre outras. Cada uma possui seu prprio conjunto de configuraes e de recursos que tem por objetivo
facilitar a vida do desenvolvedor, que pode tanto instalar o ambiente como um programa comum e tambm iniciar e
parar os servios facilmente.
Sendo assim, devemos instalar um pacote chamado WAMP ou XAMPP, que permite instalar e configurar em um s
processo o servidor Apache, a base de dados MySQL e o mdulo de programao em PHP.
22
Universidade Corporativa Prodemge 2014

WAMP ou XAMPP so sistemas indicados para os usurios que no tm instalado no sistema nenhum dos programas
necessrios para programar em PHP (Apache, PHP e MySQL), j que realiza uma instalao completa e desde zero.
Mas tambm podem utilizar este programa os usurios que dispem de Apache, PHP e/ou MySQL em seu sistema.
Em cujo caso, simplesmente se realizar outra cpia das aplicaes em um diretrio distinto, que a princpio, no tem
porque interferir com as outras instalaes alojadas em nosso computador.
4.2.1

Instalao XAMPP ou WAMP

A instalao se realiza atravs de um executvel Windows onde podem se introduzir poucas configuraes, apenas o
diretrio onde desejarmos que se instalem os programas. Depois do processo de instalao foram criados dois servios
com o servidor web e o de base de dados:
Servio wamp/xamp apache: Relacionado com o servidor Apache.
Servio wamp/xamp mysql: Relacionado com a base de dados MySQL.
Dentro do diretrio onde tivermos instalado WAMP/XAMPP ter sido criado uma pasta chamada "www", que
corresponde com o diretrio de publicao, ou seja, o lugar onde devem ser colocadas as pginas web.
Durante a instalao tambm devemos decidir se desejamos que WAMP/XAMPP se inicie automaticamente ao ligar o
computador ou se desejamos que seu funcionamento se realize manualmente.
4.2.2

Funcionamento dos servidores

Aps a instalao de um desses pacotes temos que inicia-lo sempre que formos utiliza-lo, caso no tivermos
selecionado que o servidor se inicie automaticamente.

Uma vez em funcionamento obteremos um cone na barra de tarefas com a forma parecida a de um marcador de
velocidade. Se clicarmos sobre esse cone, abrir um menu com opes variadas para providenciar os servios
relacionados com o pacote.

4.2.3

PHPMyAdmin

23
Universidade Corporativa Prodemge 2014

PHPMyAdmin um aplicativo web desenvolvido em PHP para administrao do MySQL pelo navegador web. A
partir deste sistema possvel criar e remover bases de dados, criar, remover e alterar tabelas, inserir, remover e editar
campos, executar cdigos SQL e manipular campos chaves. Atualmente o XAMPP insere o PHPMyAdmin junto com
o servidor PHP e MySql quando instalado. Site Oficial: http://www.phpmyadmin.net

1. Lista dos bancos de dados j criados


2. Aba onde mostra os bancos de dados j criados e possibilita a criao de novos.

4.3 GET e POST


Quando desenvolvido um site dinmico, h necessidade de passar alguns valores de uma pgina para a outra, para
que seja possvel, ento, realizar operaes como consultas e inseres no banco, autenticao de usurios, etc. No
PHP h dois mtodos, o GET e POST.

4.3.1

GET

o mtodo mais simples e mais limitado para se usar. Neste caso os valores e seus respectivos identificadores so
transmitidos pela URL, como exemplo: http://www.meusite.com/versecao.php?id=32&descricao=Minha_Secao
Esse exemplo demonstra na prtica o uso da passagem de parmetros via GET. A presena da interrogao (?) indica
o fim do endereo e o incio da declarao dos nossos valores que sero passados. Neste caso, a pgina versecao.php
receber uma varivel chamada id com o valor 32, e outra varivel descricao com valor Minha_Secao.
Como os valores so passados pela URL, h um limite para o nmero de bytes que sero enviados. Podendo ser
enviado no mximo 1024 caracteres, o que limita bastante a possibilidades com esse mtodo.
Outra questo, agora referente segurana, sobre os tipos de dados que voc poder enviar via URL. Como nesse
mtodo os dados so visveis ao usurio e o navegador salva no histrico, no bom, que seja passado informaes
confidenciais via GET, como senhas por exemplo.
24
Universidade Corporativa Prodemge 2014

O ideal que se use o mtodo GET somente para passar parmetros para pesquisas e outras informaes no crticas.
Para solucionar os outros problemas temos disponvel o mtodo POST.

O PHP armazena as variveis vindas por GET em arrays associativos, vetores cujos ndices so strings.
Vejamos como seria o retorno do exemplo GET acima.
Foram passadas duas variveis: id e descrio. Para pegar o id e descrio fazemos:
$meuId = $_GET[id] e $minhaDescricao = $_GET[descricao]

4.3.2

POST

O mtodo POST representa uma alternativa ao mtodo GET para as questes de capacidade e segurana. Nesse
mtodo uma conexo paralela aberta e os dados so passados por ela. No h restrio referente ao tamanho e os
dados no so visveis ao usurio. H nica condio que se use um formulrio para a transferncia dos dados.
Na tag form, temos um atributo action. Nesse atributo que setado a pgina que receber nossas informaes. Quando
o boto submit for acionado todos os dados desse formulrio sero passados para a pgina definida no action. uma
maneira segura e com mais capacidade em termos de espao.
No caso do mtodo POST, temos um array chamado $_POST que armazenar os dados vindos do formulrio. Vale
lembrar que, nesse caso, os ndices do array sero os nomes dados aos inputs no seu formulrio.
Para acessar os valores vindos de um formulrio com nome e idade, fazemos:

$nome = $_POST[nome] e $idade = $_POST[idade]

4.4 Formulrio
Os valores enviados atravs de um formulrio podem ser recuperados pela varivel predefinida $_POST. Atravs dela
possvel obter os dados que foram enviados atravs do mtodo POST do HTML, bastando indicar o nome do campo
do formulrio. No comando action do formulrio, deve-se indicar a pgina PHP que ir receber os valores. O mesmo
documento pode conter o cdigo e o formulrio.

4.4.1

Salvando e listando dados do formulrio

25
Universidade Corporativa Prodemge 2014

Criaremos a classe Conexao, esta classe ela cria uma conexo com o banco de dados MySQL passando por
parmetro no mtodo mysql_connect endereo do banco de dados, login e senha.
Logo em seguida h um if que verifica se h conexo seno ir disparar a mensagem de erro No conectado e a
cauda do erro emitido pelo MySQL.
Na funo mysql_select_db passado por parmetro o a base de dados selecionada e o link de conexo criado
acima. Novamente verificado se h conexo seno ir disparar o erro.

Criaremos o arquivo index.php que ser a pgina principal, neste arquivo haver um formulrio para listar todos os
clientes cadastrados pelo formulrio. Os valores recebidos no foreach vem de um mtodo da classe Clientes mtodo
listarClientes que ser mostrado em seguida.
H um boto para adicionar um novo cliente que redirecionar a pagina para o arquivo adicionar_cliente.php, que h
um formulrio para o cadastro do mesmo.

O arquivo abaixo o adicionar_cliente.php que haver um formulrio em HTML que cadastra o nome e
telefone do cliente. E envia para o mtodo salvarCliente da classe Clientes.
26
Universidade Corporativa Prodemge 2014

Finalmente iremos adicionar a classe Clientes no arquivo Clientes.php. Esta classe tem dois mtodos um para
salvar e outro para listar clientes. O mtodo salvarCliente cria uma nova conexo com bancos de dados e executa a
query de insert, esse mtodo chamado no arquivo adicionar_cliente.php.
O mtodo listarClientes executa uma query se select que retorna todos os clientes cadastrados e vetoriza os
resultados no array $clientes usando o operado while, esse mtodo chamado no index.php.

VAMOS PRATICAR
1. Acessar o PHPMyAdmin: localhost/phpmyadmin
2. Criar Base de dados: exemplo
27
Universidade Corporativa Prodemge 2014

3. Criar tabela: clientes

1. Criar um CRUD para cliente


1.1. Listar
1.2. Cadastrar
1.3. Editar
1.4. Excluir
2. Criar classe para Conexo e Clientes

Referncias

Manual PHP
Disponvel em < http://php.net/manual/pt_BR/index.php>. Acesso em 01 de set. de 2014.
Revista PHP
Disponvel em < http://www.revistaphp.com.br/>. Acesso em 03 de set. de 2014.

P. F. Marcos, PHP, Apostilando.com


Disponvel em <http://www.apostilando.com>. Acesso em 10 de set. de 2014.

Arajo, Emanuel, A Construo do Livro: Princpios da tcnica de editorao


Rio de Janeiro, Nova Fronteira/INL, 1986

28
Universidade Corporativa Prodemge 2014