PHP orientado à objetos – parte 3
Postado por Abraão Levi em 30 de dezembro de 2010
Acompanhe os artigos sobre orientado à objetos:
Para tornar o uso de objetos mais simples, o PHP também oferece uma série de métodos mágicos, ou métodos especiais que são chamados quando certas ações comuns ocorrem dentro de objetos. Isso permite aos desenvolvedores executar uma série de tarefas úteis com relativa facilidade.
Construtores e Destrutores
Quando um objeto é instanciado, muitas vezes é desejável definir algumas coisas que são padrões. Para lidar com isso, o PHP fornece o método mágico __construct(), que é chamado automaticamente sempre que um novo objeto é criado, como o próprio nome diz, ele é o método construtor.
Para ilustrar o conceito de construtores, adicione um construtor para MyClass que retorna uma mensagem sempre que uma nova instância da classe é criada:
<?php class MyClass { public $prop1 = "Eu sou uma propriedade da classe!"; public function __construct() { echo 'A classe "', __CLASS__, '" foi inicializada!<br />'; } public function setProperty($novoValor) { $this->prop1 = $novoValor; } public function getProperty() { return $this->prop1 . "<br />"; } } // Cria um novo Objeto $obj = new MyClass; // Retorna o valor do atributo $prop1 echo $obj->getProperty(); // Identifica quando o fim do arquivo echo "Fim do arquivo.<br />"; ?>
Nota – __CLASS__ retorna o nome da classe na qual ele é chamado, é o que é conhecido como uma constante mágica. Existem várias disponíveis que você pode ler mais sobre no manual do PHP.
A saída esperada é a seguinte:
A classe MyClass foi inicializada! Eu sou uma propriedade da classe! Fim do arquivo.
Para chamar uma função quando o objeto é destruído, o __destruct() método mágico que está disponível. Isso é útil para a limpeza da classe (fechamento de uma conexão com o banco, por exemplo).
Vamos modificar um pouco o código e ver seu resultado no navegador:
<?php class MyClass { public $prop1 = "Eu sou uma propriedade da classe!"; public function __construct() { echo 'A classe "', __CLASS__, '" foi inicializada!<br />'; } public function __destruct() { echo 'A classe "', __CLASS__, '" foi destruida.<br />'; } public function setProperty($novoValor) { $this->prop1 = $novoValor; } public function getProperty() { return $this->prop1 . "<br />"; } } // Cria um novo Objeto $obj = new MyClass; // Retorna o valor do atributo $prop1 echo $obj->getProperty(); // Identifica quando o fim do arquivo echo "Fim do arquivo.<br />"; ?>
Resultado no browser:
A classe MyClass foi inicializada! Eu sou uma propriedade da classe! Fim do arquivo. A classe MyClass foi destruida!
Quando um arquivo finaliza sua execução, o PHP automaticamente libera todos os recursos.
Caso você queira acionar o destrutor antes do termino da execução do arquivo, você pode destruir o objeto usando o
unset() função:
<?php class MyClass { public $prop1 = "Eu sou uma propriedade da classe!"; public function __construct() { echo 'A classe "', __CLASS__, '" foi inicializada!<br />'; } public function __destruct() { echo 'A classe "', __CLASS__, '" foi destruida.<br />'; } public function setProperty($novoValor) { $this->prop1 = $novoValor; } public function getProperty() { return $this->prop1 . "<br />"; } } // Cria um novo Objeto $obj = new MyClass; // Retorna o valor do atributo $prop1 echo $obj->getProperty(); // Destroi o objeto unset($obj); // Identifica quando o fim do arquivo echo "Fim do arquivo.<br />"; ?>
Veja:
A classe MyClass foi inicializada! Eu sou uma propriedade da classe! A classe MyClass foi destruida! Fim do arquivo.
Existem outros métodos __call, __callStatic, __get, __set, __isset, __unset, __sleep, __wakeup, __toString, __invoke, __set_state e __clone que você pode ver mais no manual do PHP, mas de início os métodos __construct e __destruct são mais que suficientes para podermos brincar um pouco com orientação objetos em PHP. Em outras linguagens, como o Java, também possuem contrutores e outros métodos que auxiliam, o que diferencia mesmo é sintaxe.
No próximo artigo vamos falar um pouco de como usar herança de classe.
Até a próxima!
Artigo postado em: Artigos e tutoriais, PHP
Tags: OO, orientação à objetos, PHP

Comentários
Sem Comentários
Deixe um Comentário!