Back-End

6 jun, 2007

PHP5 + OOP – Parte 02 (Construtores e Destrutores)

Publicidade

Prosseguindo a série, estudaremos o conceito e logo após a implementação de construtores e destrutores.

Construtores

São métodos executados no momento em que se instancia uma classe. Ou seja, ao criar um objeto de uma classe, o construtor é automaticamente executado caso esteja definido. No PHP5 temos a nomenclatura padrão __construct(), porém o modelo antigo, com o mesmo nome da classe, também é válido para manter compatibilidade com PHP4. Caso um construtor não seja definido explicitamente, o PHP implementa implicitamente um construtor vazio.

Implementação de construtores:
class PrimeiraClasse
{
	function __construct()
	{
		echo "Primeira classe construída";
	}
}

$obj = new PrimeiraClasse();

Quando instanciarmos o objeto conforme a última linha do código, teremos:

  • Primeira classe construída

Logo, o método foi executado na instanciação da classe.

Destrutores

Se construtor constrói, os destrutores farão o inverso. Quando todas as operações com a instância da classe são finalizadas, então o destrutor é executado. Isso se torna útil, por exemplo, quando trabalhamos com uma classe de acesso a dados. O construtor inicia a conexão com o banco e o destrutor pode cuidar de fechá-la. No PHP5 usamos a nomenclatura padrão __destruct() para implementarmos destrutores.

Implementação de destrutores:

class PrimeiraClasse
{	 
	function __construct()
	{
		echo "Primeira classe construída <br />";
	}	 
	function operacoes()
	{	
		echo "Realizando Operações <br />";
	}	 
	function __destruct()
	{
		echo "Primeira classe destruída <br />";
	}	 
}
	 
obj = new PrimeiraClasse();
obj->operacoes();

De acordo com a implementação, teremos o retorno:

  • Primeira classe construída
  • Realizando Operações
  • Primeira classe destruída

Após todas as operações solicitadas, e as classes executadas, o destrutor é executado.

Construtores, destrutores e herança

Construtores e destrutores podem ser herdados, porém precisam ser chamados dentro da classe filha com a diretiva parent::__construct() eparent::__destruct() .

Implementação com herança:

class PrimeiraClasse
{
 
	function __construct()
	{
		echo "Primeira classe construída <br />";
	}
		 
	function operacoes()
	{
		echo "Realizando Operações <br />";
	}
		 
	function __destruct()
	{
		echo "Primeira classe destruída <br />";
	}
	 
}
	 
class SegundaClasse extends PrimeiraClasse
{
	 
	function __construct()
	{
		parent::__construct();
		echo "Segunda classe construída <br />";
	}
		 
	function __destruct()
	{
		parent::__destruct();
		echo "Segunda classe destruída <br />";
	}	 
}
	 
obj = new SegundaClasse();
obj->operacoes();

Teremos o seguinte retorno:

  • Primeira classe construída
  • Segunda classe construída
  • Realizando Operações
  • Primeira classe destruída
  • Segunda classe destruída

A implementação destes recursos podem agilizar o processo de desenvolvimento além de serem semanticamente corretas. No próximo artigo estudaremos visibilidade.

Qualquer dúvida, basta deixar um comentário abaixo, acessar meu blog www.aguinelopedroso.com ou me enviar um e-mail.

Até a próxima.