Todos sabemos que no PHP não é possível declarar uma variável, porém é possível inicializar uma variável com um determinado valor.
Quando tentamos utilizar uma variável que não foi inicializada, o PHP retorna um erro do tipo Notice. Como vários servidores não exibem os erros do tipo Notice, através do código abaixo é possível fazer com que esse erro seja tratado como um Fatal Error, que vai finalizar a execução do script.
A vantagem dessa alteração é aumentar o controle sobre as variáveis utilizadas no programa e evitar possíveis erros de execução.
Segue o código:
function newErrorHandler($error, $message)
{
if($error == 8)
{
trigger_error($message, E_USER_ERROR);
}
return false;
}
set_error_handler("newErrorHandler");
$novaVariavel = $variavelInexistente;
Além dessa maneira, quando trabalhamos com encapsulamento, podemos utilizar funções que testam o tipo da variável para garantir que o valor de um atributo será de um determinado tipo. Esse teste pode ser feito tanto para tipos primitivos quanto para tipos criados pelo usuário ou arrays.
class Pessoa
{
private $id;
private $nome;
private $tipo;
private $listaTelefone;
public function setId($id)
{
if(is_integer($id))
$this->id = $id;
else
throw new Exception('O atributo ID deve ser numérico.');
}
public function setNome($nome)
{
if(is_string($nome))
$this->nome = $nome;
else
throw new Exception('O atributo NOME deve ser uma string.');
}
public function setTipo($tipo)
{
if($tipo instanceof PessoaFisica)
$this->tipo = $tipo;
else
throw new Exception('O atributo TIPO deve ser um objeto da classe PessoaFisica.');
}
public function setListaTelefone($listaTelefone)
{
if(is_array($listaTelefone))
$this->listaTelefone = $listaTelefone;
else
throw new Exception('O atributo LISTA TELEFONE deve ser um array.');
}
}
Outros detalhes interessantes surgiram no decorrer desse tópico e que muitos desenvolvedores podem não saber da possibilidade, como por exemplo definir explicitamente o tipo de dados que uma função pode receber como parâmetro.
function calculaSalario(Array $empregados)
{
// código
}
Dessa maneira a função calculaSalario() somente irá aceitar uma variável que seja do tipo Array. Lembrando que não é possível utilizar tipos primitivos para essa funcionalidade, porém é possível utilizar tipos criados pelo usuário através de classes.