You are on page 1of 9

Programao orientada a objetos com PHP Guia rpido de consulta

um objeto;
definido;
Um objeto uma instncia de uma 'classe'. Voc define uma classe utilizando o trecho de cdigo abaixo;
class ClasseBase{ //aqui entra o cdigo }

instanciado;
$objetoBase = new ClasseBase;

Caso queira, voc pode atribuir valores s variveis (ou atributos) da classe atravs do mtodo construtor.
$objetoBase = new ClasseBase($var1, $var2);

possui um construtor;
Trata-se de um 'mtodo mgico' executado toda vez que o objeto instanciado. Se o construtor no estiver definido, o construtor da classe base (se aplicvel) utilizado.
function __construct() { //aqui entra o cdigo }

Caso voc esteja atribuindo valores s variveis do objeto, voc precisa do seguinte cdigo;
function __construct($var1, $var2) { //aqui entra o cdigo }

Voc pode ainda utilizar o construtor da classe base junto com o construtor da classe atual. Ao definir um construtor na classe base, voc pode processar trechos de cdigo e/ou definir e passar argumentos adicionais ao construtor da classe base. Por exemplo;
function __construct($var1, $var2) { parent::__construct($var1, $var2, $var3); }

pgina 1 de 9

Programao orientada a objetos com PHP Guia rpido de consulta

possui um destrutor;
Este 'mtodo mgico' executado toda vez que o objeto destrudo, geralmente quando o script terminar de ser processado.
function __destruct() { //aqui entra o cdigo }

pode herdar;
Uma classe pode herdar todos os mtodos e atributos de uma outra classe. O nome disso herana e trata-se de um dos principais conceitos da orientao a objetos.
class SubClasse extends ClasseBase { //aqui entra o cdigo }

pode ser abstrato;


Este tipo de classe no pode ser instanciado diretamente e precisa ser estendido. Este outro conceito chave na POO; abstrao.
abstract class ClasseBase { //aqui entra o cdigo }

pode ser final;


Esta a ltima classe na hierarquia, ela no pode ser estendida, seus atributos e mtodos no podem ser herdados.
final class SubClasse extends ClasseBase { //aqui entra o cdigo }

pode ser copiado;


Um objeto (uma instncia de uma classe) pode ser clonado. A cpia passa a ser uma instncia completamente nova do objeto, preservando os valores at o momento exato da cpia.
$subObjeto = new SubClasse; $copia_de_subObjeto = clone $subObjeto;

pgina 2 de 9

Programao orientada a objetos com PHP Guia rpido de consulta

pode ser carregado automaticamente;


O 'mtodo mgico' autoload executado toda vez que um novo objeto instanciado. muito usado para o include dos arquivos da classe, assim, voc no precisa fazer isso nos arquivos de sua aplicao. Por exemplo;
function __autoload($class) { include_once(CLASS_INCLUDE_PATH.'class.'.$class.'.php'); }

utilizando instanceof;
O operador de tipo instanceof utilizado para determinar se uma varivel ou no uma instncia (um objeto) de uma classe.
$subObjeto = new SubClasse; if ($subObjeto instanceof SubClasse) { //isto verdadeiro }

utilizando __call();
Mais um mtodo mgico. Este executado quando um mtodo indefinido ou inacessvel chamado. O nome da funo e os argumentos devem ser passados como parmetros.
function __call($funcao, $args) { echo Voc tentou executar um mtodo invlido.<br>; echo Mtodo: .$funcao.<br>; echo implode(', ', $args); exit; }

um mtodo;
definido;
Um mtodo uma funo dentro de uma classe.
function subMetodo() { echo 'Isto um mtodo.'; }

acessado;
Deve ser acessado da mesma maneira que voc utiliza funes. Se desejar, voc pode passar variveis atravs de parmetros. Para chamar um mtodo dentro do escopo da
pgina 3 de 9

Programao orientada a objetos com PHP Guia rpido de consulta

classe, utilize;
$this->subMetodo();

E para chamar um mtodo fora do escopo da classe, utilize;


$subObjeto = new SubClasse; $resultado = $subObjeto->subMetodo();

Da mesma maneira, voc tambm pode chamar mtodos de uma classe base. Voc os referencia dentro e fora do escopo da classe utilizando;
$subObjeto = new SubClasse; $resultado = $subObjeto->metodoBase();

Dentro do escopo da classe h uma maneira alternativa. Este tipo de chamada geralmente utilizado para mtodos estticos.
$resultado = parent::metodoBase();

pode ser abstrato;


Ao transformar um mtodo em abstrato voc est definindo que o mesmo deve estar presente em todas as subclasses. Caso o mtodo possua argumentos, eles tambm devero estar presentes nas subclasses. Por exemplo;
abstract function metodoObrigatorio($var1, $var2); abstract function outroMetodoObrigatorio();

pode ser sobrescrito;


Voc pode sobrescrever um mtodo em uma subclasse, uma vez que ele no seja final (veja abaixo). Por exemplo, o mtodo a seguir pode ser definido na subclasse. Este outro princpio chave da POO; Polimorfismo.
function metodoBase() { echo 'Este mesmo mtodo existe tambm na classe base.'; }

pode ser final;


Um mtodo final no pode ser sobrescrito nas subclasses.
final function metodoBase() { echo 'Voc no pode criar outro mtodo com este nome'; }

pgina 4 de 9

Programao orientada a objetos com PHP Guia rpido de consulta

pode ser pblico;


Todos os mtodos so pblicos, caso no tenha sido especif icada uma visibilidade. Este o padro do PHP. No entanto, altamente recomendado que voc utilize a keyword public. Mais um conceito chave da POO; Encapsulamento.
public function metodoBase() { //aqui entra o cdigo }

pode ser privado;


Caso um mtodo seja configurado como privado, ele s poder ser acessado dentro do escopo da prpria classe.
private function metodoBase() { //aqui entra o cdigo }

pode ser esttico;


Um mtodo esttico permite que voc acesse atributos estticos dentro de uma classe e nada mais. Voc no precisa instanciar um objeto para acessar um mtodo esttico.
//defina uma constante esttica static public $estatico = 10; static function metodoEstatico() { //para acessar um atributo esttico use a keyword self echo self::$estatico; }

Agora, para acessar o mtodo fora do escopo da classe, sem instanciar o objeto (onde SubClasse o nome do objeto) utilize;
echo SubClasse::metodoEstatico();

induo de tipo;
Este recurso permite que voc especif ique o tipo dos argumentos que sero passados para um mtodo. Voc pode querer que seu mtodo s receba parmetros do tipo array ou uma instncia de um objeto, por exemplo.
public function metodoBase(SubClasse $subObjeto) { echo 'Varivel precisa ser uma instncia de SubClasse'; }

pgina 5 de 9

Programao orientada a objetos com PHP Guia rpido de consulta

Para especif icar que o parmetro passado seja um array, utilize;


public function metodoBase(array $vetor){ echo 'A varivel precisa ser um vetor'; }

utilizando func_num_args();
Esta funo nativa do PHP retorna o nmero de argumentos passados para uma funo/mtodo. Por exemplo;
public function metodoBase($var1, $var2){ if (func_num_args() != 2){ return false; } } } else { //aqui entra o cdigo

um atributo;
definido;
Um atributo nada mais do que uma varivel dentro do escopo da classe. Para definir um atributo utilize:
$subVar = True;

acessado;
Para referenciar um atributo ou definir um valor para o mesmo dentro da classe, utilize;
//referencia um atributo print $this->subVar; //define um valor para o atributo $this->subVar = False;

E para fazer isso fora do escopo da classe, utilize;


//referencia um atributo print $subObjeto->subVar;

pgina 6 de 9

Programao orientada a objetos com PHP Guia rpido de consulta

//define o valor de um atributo $subObjeto->subVar = False;

pode ser pblico;


Assim como os mtodos, a visibilidade padro dos atributos pblica.Isto signif ica que eles podem ser acessados e modif icados em qualquer lugar dos seus aplicativos. No entanto, seguindo as boas prticas de desenvolvimento, utilize sempre a keyword public.
public $subVar = True; public $outraVar;

pode ser privado;


Um atributo privado s pode ser acessado dentro do escopo da classe. No pode ser acessado nem mesmo por suas subclasses.
private $subVar = True; private $outraVar;

pode ser protegido;


Um atributo protegido s pode ser acessado dentro do escopo da classe e de suas subclasses.
protected $subVar = True; protected $outraVar;

pode ser esttico;


Voc no precisa instanciar um objeto para acessar um atributo esttico. Para definir um atributo como esttico utilize;
static public $estatico = 10;

Para acessar o atributo fora do escopo da classe sem instanciar o objeto (onde SubClasse o nome do objeto) utilize;
echo SubClasse::$estatico;

pode ser constante;


Acontea o que acontecer, os atributos constantes nunca sofrem alteraes. So geralmente utilizados como referncias na passagem de argumentos para um mtodo. Por exemplo, ao invs de passar o valor 1, utilize a constante STATUS_PENDENTE, que tem algum signif icado, facilitando a leitura do cdigo.
const STATUS_PENDENTE = 1;

Para acessar a constante voc utiliza o nome da classe, da mesma forma que faz quando
pgina 7 de 9

Programao orientada a objetos com PHP Guia rpido de consulta

acessa um mtodo esttico.


echo SubClasse::STATUS_PENDENTE;

uma interface;
definida;
Uma interface um 'manual de instrues' ou um 'modelo' de como as classes devem ser utilizadas. parecido com definir um mtodo abstrato na classe base, mas permite uma flexibilidade maior entre mltiplas classes. geralmente utilizado para tarefas mais internas do aplicativo, como registro de logs e tratamento de excees;
interface Modelo { //aqui entra o cdigo }

pode conter mtodos;


Isto signif ica que os mtodos definidos e suas assinaturas devem ser implementados em algum lugar na hierarquia de classes que utiliza a interface.
interface Modelo { public function trataXML($xml); }

pode conter constantes;


Voc pode declarar constantes da interface, que podem ser utilizadas tanto dentro do escopo da classe como fora. Elas no podem ser sobrescritas por nenhuma das classes que utilize a interface.
interface Modelo { const nome = 'Teste'; }

Para acessar estas constantes, utilize;


echo Modelo::nome;

implementada;
Ao definir uma classe, voc utiliza a keyword implements para dizer que a classe precisa seguir o modelo da interface. Mais de uma interface pode ser implementada.
class ClasseBase implements Modelo{ //aqui entra o cdigo }
pgina 8 de 9

Programao orientada a objetos com PHP Guia rpido de consulta

pode ser estendida;


Interfaces tambm podem herdar mtodos e constantes de uma interface base.
interface Modelo extends ModeloPrincipal{ //aqui entra o cdigo }

misc;
php5 oop;
http://www.php.net/manual/en/oop5.intro.php

verso original acmultimedia


http://blog.acmultimedia.co.uk/2010/03/object-oriented-programming-using-php-oop/

traduzido por davi ferreira


http://www.daviferreira.com/blog/

pgina 9 de 9