58 votes

Tester si la propriété existe

Je continue à lire documentation php que isset() est plus rapide que property_exists() et nous devrions utiliser une combinaison des deux comme

if (isset($this->fld) || property_exists($this, 'fld')) { 

Mais pourquoi je ne peux pas utiliser isset alors ?

if (isset($this->fld)) {

80voto

prodigitalson Points 38549

Parce que property_exists vous dira si c'est même une propriété définie de la classe/objet alors que isset ne fait pas cette distinction. par exemple :

class A {
  protected $hello;
}

class B {

}

en utilisant property_exists($this, 'hello') sur Classe A retournera true tout en l'utilisant dans classe B retournera false . isset retournera false sur les deux instances.

5voto

James Black Points 26183

Cela dépend de la façon dont votre programme est réalisé, mais si vous lisez les commentaires dans le manuel, cela vous aidera à expliquer les particularités d'une fonction.

http://php.timesoft.cc/manual/en/function.property-exists.php

La partie importante est ici :

La documentation laisse de côté le cas important des nouvelles propriétés que vous que vous ajoutez aux objets au moment de l'exécution. En effet, property_exists retournera vrai si si vous lui demandez de telles propriétés.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X