Construtor e Destrutor de Classes
O construtor __construct(), é uma função definida na classe e que é executada sempre que o objeto é criado (isto é, sempre que a classe é instanciada). No PHP a função __construct() é implícita, ela esta subentendida quando usamos new(). A função __construct() pode ser construída de forma que aceite parâmetros na sua definição.
public function __construct($n = "", $i="") { $this->setNome($n); $this->t;setIdade($i); }Isto é útil quando chamamos new() com parâmetros assim economizamos linhas de código pois não precisamos chamar os métodos set() para definir os valores dos atributos do objeto. Como no exemplo abaixo.
<?php if(!empty($_GET)) { $n = $_GET['nome']; $i = $_GET['idade']; try { $cliente = new Cliente($n, $i); //$cliente->setNome($nome); //$cliente->setIdade($idade); echo $cliente->getNome() . ", salvo com sucesso."; echo $cliente->getIdade() . " anos de idade."; } catch (Exception $e) { echo $e->getMessage(); } } ?>O destrutor da classe, a função __destruct() não recebe nenhum paràmetro, é executado sempre que o objeto for destruído, seja de forma explicita ou implicitamente (por exemplo, no final do script que utiliza a classe).
public function __destruct() { echo "O objeto " . $this->getNome() . " foi destruído."; }Classes que estendem outras classes, ou seja, subclasses o construtor precisa ser chamado de forma explícita, mas sobre isso falarei mais adiante, nas aulas futuras. Disponibilizo o código completo da classe abaixo.
<?php /** * Classe Cliente * * @author Luiz Carlos */ class Cliente { //Atributos public $nome; protected $idade; //Métodos public function __construct($n = "", $i = "") { $this->setNome($n); $this->setIdade($i); } public function __destruct() { echo "O objeto " . $this->getNome() . " foi destruído."; } public function setNome($nome) { $this->nome = $nome; } public function setIdade($idade) { if($idade > 130) { // exit(); throw new Exception("Idade inválida!"); } else { $this->idade = $idade; } } public function getNome() { return $this->nome; } public function getIdade() { return $this->idade; } } ?> <html> <head> <meta http-equiv="Content-Type" content="text/html" charset="UTF-8"/> <title>Classe Cliente</title> </head> <body> <?php if(!empty($_GET)) { $n = $_GET['nome']; $i = $_GET['idade']; try { $cliente = new Cliente($n, $i); //$cliente->setNome($nome); //$cliente->setIdade($idade); echo $cliente->getNome() . ", salvo com sucesso."; echo $cliente->getIdade() . " anos de idade."; } catch (Exception $e) { echo $e->getMessage(); } } ?> <form name="fcliente" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get"> <label for="nome">Nome</label> <input name="nome" type="text" maxlength="30" size="30"/> <label for="idade">Idade</label> <input name="idade" type="text" maxlength="3" size="3" /> <input value="Salvar" type="submit"> </form> </body> </html>Segue vídeo-aula...
Até a próxima!