A função property_exists é utilizada para verificar se um objeto ou classe tem uma determinada propriedade. Esta função se comporta de maneira diferente de acordo com a propriedade testada existir ou não na declaração da classe, assim como se for adicionada dinamicamente e após, ser removida com a função unset();
É importante estar ciente deste modo de funcionamento, para justamente evitar surpresas durante a programação, visto que o comportamento da função pode ser bem diferente do que o programador intuitivamente pode esperar.
Abaixo exemplificamos o comportamento:
<?php
class ClasseTeste {
public $declarada = null;
}
$ObjetoTeste = new ClasseTeste;
var_dump(property_exists("ClasseTeste", "dinamico")); // boolean false, como esperado
var_dump(property_exists($ObjetoTeste, "dinamico")); // boolean false, como esperado
$ObjetoTeste->dinamico = null;
var_dump(property_exists($ObjetoTeste, "dinamico")); // boolean true
unset($ObjetoTeste->dinamico);
var_dump(property_exists($ObjetoTeste, "dinamico")); // boolean false, novamente.
var_dump(property_exists($ObjetoTeste, "declarada")); // boolean true, como esperado
unset($ObjetoTeste->declarada);
var_dump(property_exists($ObjetoTeste, "declarada")); // boolean true, mesmo se utilizado a função unset(). Surpresa!



