Escolar Documentos
Profissional Documentos
Cultura Documentos
PHP O.O
1
Sumrio
O que o PHP?....................................................................................................................................4
Como funciona o PHP?........................................................................................................................4
O que ser necessrio para utilizar o PHP neste curso?.......................................................................4
O arquivo PHP.ini.................................................................................................................................5
Primeiro programa em PHP Orientado a Objetos: Construindo um Login..........................................7
Classes e Mtodos Mgicos.............................................................................................................8
Variveis e mtodos.......................................................................................................................10
Propriedades (atributos ou campos)...............................................................................................11
Variveis estticas e mtodos estticos..........................................................................................13
Passagem de parmetros em mtodos............................................................................................14
Definindo parmetros default em mtodos....................................................................................15
Herana..........................................................................................................................................17
Interfaces, Classes e mtodos abstratos ........................................................................................18
Traits..............................................................................................................................................24
Sobreposio (Overriding).............................................................................................................25
A palavra-chave final.................................................................................................................26
Clonagem de objetos......................................................................................................................27
Comparao de objetos..................................................................................................................29
Crditos:.............................................................................................................................................31
PHP OO
O que o PHP?
Diretiva
Valor
Default
On
Significado
expose_php
date.timezone
disable_functions
display_errors
file_uploads
upload_max_filesi 2M
ze
max_file_uploads
max_execution_ti
me
memory_limit
mssql.timeout
post_max_size
20
30
128M
60
8M
Todo cdigo PHP deve estar dentro de um <?php ?>. O resultado esperado que seja
aberto uma pgina em branco no browser padro do sistema operacional. Caso o
mesmo no abra, digite no browser o endereo URI http://localhost/PASTA RAIZ
DO PROJETO/index.php (Substitua PASTA RAIZ DO PROJETO pela pasta
correspondente ao projeto no diretrio htdocs). Uma pgina em branco dever
aparecer.
Crie um novo arquivo chamado usuario.php.
NOTA
Variveis e mtodos
Variveis em PHP so iniciadas com o smbolo $. Alm disso, PHP uma linguagem
no-tipada. Isto quer dizer que no necessrio declarar o tipo das variveis, pois o
PHP possui a capacidade de inferir sobre tais tipos.
Crie duas variveis uma chamada usuario e a outra senha. Em seguida crie os
respectivos mtodos GETTERS e SETTERS.
DICA
NOTA
10
NOTA
NOTA
Perceba, que um cdigo HTML <br> foi posto junto ao PHP. Esta uma
das facilidades que o PHP fornece.
Ex.:
Mtodos
Atributos
Visibilidade (contexto)
public $nome;
private $nome;
protected $nome;
Ocorrer o seguinte erro fatal devido no ser permitido chamar um mtodo protegido
fora do contexto da classe e das subclasses:
12
DICA
13
14
NOTA
15
Para mais detalhes sobre como passar argumentos para funes e mtodos acesse:
http://www.php.net/manual/pt_BR/functions.arguments.php
16
Herana
No paradigma Orientado a Objetos, vrios so os benefcios da herana . Como visto
em http://erpbasic.blogspot.com.br/2012/01/inheritance-advantages-and.html, a herana permite
reusabilidade de cdigo, extensibilidade, ocultamento de dados, dentre outros. Em
PHP, utilizar herana muito semelhante ao modo de utilizar na linguagem Java. Para
isso, utilizada a palavra reservada extends.
Exemplo: no mesmo projeto, adicione uma classe chamada UsuarioComum que
estender a classe Usuario.
Na classe UsuarioComum existe um mtodo construtor e destrutor que invoca o
construtor e destrutor da super classe (Usuario). Alm disso, um atributo chamado
nro_vezes_acessado estar na classe para fins estticos saber quantas vezes um
usurio comum acessou o sistema. Certifique de que este atributo ser incrementado
em um a cada vez que o usurio comum acessar o sistema.
17
Houve algum erro? Pense em como corrigir isso. Uma dica: this is the problem.
Exerccio: Implemente uma classe Endereco que estenda a classe Empregado. O
Empregado deve ter um ID, nome, sexo e um salrio. A classe Endereco deve
conter, alm dos atributos da classe me, os atributos pas, cidade, rua e nmero. As
classes devem conter implementados em si os conceitos de encapsulamento (atributos
privados e mtodos de manipulao pblicos).
Interfaces, Classes e mtodos abstratos
Classes abstratas so classes que no podem ser instanciadas, isto , no possvel
criar objeto da classe abstrata.
18
Caso um mtodo de uma classe for abstrato, obrigatoriamente a classe ser abstrata.
Um mtodo abstrato possui apenas a sua assinatura (especificao) na classe abstrata,
isto obriga que as subclasses (classe filha) o implemente. Ele ainda deve possuir
visibilidade pblica ou protegida.
Uma classe abstrata pode conter mtodos abstratos (sem implementao) e mtodos
no abstratos.
Uma interface contm apenas mtodos abstratos.
A classe filha define o mtodo com mesma ou mais fraca visibilidade.
Para praticar, a classe Usuario ser uma abstract class. Alm disso, ser adicionado
o mtodo abstrato logar().
19
20
21
mtodo
1) O fato de a classe Usuario ser abstrata possibilita que ela deixe que esse mtodo
seja implementado pelas subclasses dela.
2) Implementa o mtodo eliminando a necessidade de que as subclasses implementeos.
No arquivo index.php faa com que um objeto do tipo Usuario chame o mtodo
imprimir_dados(Usuario $u).
22
NOTA
NOTA
23
Exerccio: Crie uma interface no projeto que declara pelo menos um mtodo. Em
seguida, mostre um exemplo de como utiliz-la.
Traits
Trait mais um mecanismo de reso de cdigo. O PHP no implementa herana
mltipla, por isso, uma maneira de reduzir esta limitao por meio do uso de traits.
Desta maneira, o desenvolvedor capaz de reusar um conjunto de mtodos situados
em classes independentes que esto em outra hierarquia.
Um trait semelhante a uma classe, porm, com um grupo de funcionalidades. No
possvel instanci-lo como uma classe concreta.
24
Neste exemplo, utilizando traits possvel que a classe View use mtodos dos traits
Hello e World, o que seria impossvel utilizando herana simples.
possvel realizar outras coisas com traits, como por exemplo, mudar a visibilidade
de
um
mtodo
Para
saber
mais
sobre
traits
consulte:
http://www.php.net/manual/pt_BR/language.oop5.traits.php
DICA
Sobreposio (Overriding)
possvel sobrepor mtodos no PHP de maneira que o mtodo em uma subclasse
seja invocado ao invs do mtodo de sua superclasse. Veja na imagem a seguir um
exemplo de sobreposio do mtodo imprimir_dados(Usuario $u)da classe
usuarioComum. Este mtodo tambm um considerado polimrfico, j que ele
herdado e sobreposto da superclasse e ainda, cada subclasse que implemente este
mtodo poder dar um comportamento diferente para o mesmo mtodo.
25
Execute o index.php.
A palavra-chave final
A palavra-chave final previne que classes filhas sobreponham um mtodo mais
acima na hierarquia. Deste modo, torna-se impossvel criar mtodos de mesmo nome
derivados da classe que utiliza a palavra-chave final.
26
Pratique:
1. Na classe UsuarioComum faa a sobreposio do mtodo
imprimir_dados(Usuario $u).
2. Na classe Usuario coloque a palavra reservada final no mtodo
imprimir_dados(Usuario $u). Certifique de que entendeu o conceito e em
seguida deixe o mtodo imprimir_dados(Usuario $u) sem a palavra final.
Clonagem de objetos
Clonagem de objetos utilizada quando se deseja criar uma cpia de um objeto, ao
invs, de ter a referncia dele propriamente dita. A clonagem de um objeto feita
atravs da palavra-chave clone. Ex.: $copia_do_objeto = clone
$objeto;.
Veja o exemplo a seguir que ilustra o arquivo index.php mostra diferena entre usar
clonagem de objetos e usar a cpia da referncia do objeto:
27
CUIDADO
28
Comparao de objetos
Existem duas maneiras de comparar objetos:
($objeto1 == $objeto2) e (!=): verifica se dois objetos so da
mesma classe e possuem os mesmos atributos e valores.
($objeto1 === $objeto2) e (!==): verifica se dois objetos so da
mesma classe, possuem os mesmos atributos e valores e representam a mesma
instncia da classe.
Alterando o arquivo index.php para realizar a comparao entre o objeto $usuario,
$clone_usuario e $copia_referencia_usuario.
29
Isso mostra mais uma vez a diferena entre clonar um objeto e copiar a referncia de
um objeto.
30
Crditos:
Higor Ernandes Ramos Silva
Leonardo Pimentel Ferreira
31