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!