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.