Dans PHP, la fonction Property_exists est utilisée pour vérifier si un objet a une certaine propriété. Il s'agit d'un outil très utile, surtout lorsque nous devons vérifier dynamiquement si les propriétés de l'objet existent. L'utilisation de cette fonction peut éviter un accès direct à une propriété inexistante, évitant ainsi des erreurs ou des exceptions potentielles.
La syntaxe de la fonction Property_exists est la suivante:
<span><span><span class="hljs-title function_ invoke__">property_exists</span></span><span>(</span><span><span class="hljs-keyword">object</span></span><span> </span><span><span class="hljs-variable">$object</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$property</span></span><span>): </span><span><span class="hljs-keyword">bool</span></span><span>
</span></span>
$ objet : l'instance d'objet qui doit être vérifiée pour la propriété.
$ Property : Le nom de la propriété à vérifier doit être une chaîne.
Cette fonction renvoie une valeur booléenne:
Renvoie True si l'objet a la propriété spécifiée.
Si l'objet n'a pas de propriété spécifiée, false est renvoyé.
Ce qui suit est un exemple simple pour démontrer l'utilisation de la fonction Property_exists .
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span> </span><span><span class="hljs-title">Person</span></span><span> {
</span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span>;
</span><span><span class="hljs-keyword">private</span></span><span> </span><span><span class="hljs-variable">$age</span></span><span>;
</span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">__construct</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$name</span></span></span><span>, </span><span><span class="hljs-variable">$age</span></span><span>) {
</span><span><span class="hljs-variable language_">$this</span></span><span>->name = </span><span><span class="hljs-variable">$name</span></span><span>;
</span><span><span class="hljs-variable language_">$this</span></span><span>->age = </span><span><span class="hljs-variable">$age</span></span><span>;
}
}
</span><span><span class="hljs-variable">$person</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">Person</span></span><span>(</span><span><span class="hljs-string">"John"</span></span><span>, </span><span><span class="hljs-number">30</span></span><span>);
</span><span><span class="hljs-comment">// Vérifiez les propriétés publiques 'name' Est-ce qu'il existe</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">property_exists</span></span><span>(</span><span><span class="hljs-variable">$person</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"propriété 'name' exister。\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"propriété 'name' 不exister。\n"</span></span><span>;
}
</span><span><span class="hljs-comment">// examiner私有propriété 'age' Est-ce qu'il existe</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">property_exists</span></span><span>(</span><span><span class="hljs-variable">$person</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"propriété 'age' exister。\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"propriété 'age' 不exister。\n"</span></span><span>;
}
</span><span><span class="hljs-comment">// examiner不exister的propriété 'address'</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">property_exists</span></span><span>(</span><span><span class="hljs-variable">$person</span></span><span>, </span><span><span class="hljs-string">'address'</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"propriété 'address' exister。\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"propriété 'address' 不exister。\n"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Le résultat de sortie est le suivant:
<span><span>propriété </span><span><span class="hljs-string">'name'</span></span><span> exister。
propriété </span><span><span class="hljs-string">'age'</span></span><span> exister。
propriété </span><span><span class="hljs-string">'address'</span></span><span> 不exister。
</span></span>
Il convient de noter que la fonction Property_exists vérifie non seulement si l'instance de l'objet a l'attribut spécifié, mais vérifie également la visibilité de l'attribut (public, protégé, privé). Cela signifie:
Il renvoie vrai même si la propriété est privée ou protégée.
Cependant, il ne vérifie pas si la valeur de la propriété est initialisée.
Par exemple, si une propriété privée n'est pas initialisée dans le constructeur, Property_exists reviendra vrai car il vérifie simplement si la propriété existe et ne se soucie pas de la valeur réelle de la propriété.
Parfois, nous pouvons l'utiliser conjointement avec des fonctions telles que Property_exists et ISSet ou vide pour s'assurer que la propriété existe non seulement, mais est initialisée et non vide avant d'accéder à une certaine propriété. Les exemples sont les suivants:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-class"><span class="hljs-keyword">class</span></span></span><span> </span><span><span class="hljs-title">Person</span></span><span> {
</span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-variable">$name</span></span><span>;
</span><span><span class="hljs-keyword">private</span></span><span> </span><span><span class="hljs-variable">$age</span></span><span>;
</span><span><span class="hljs-keyword">public</span></span><span> </span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">__construct</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$name</span></span></span><span>) {
</span><span><span class="hljs-variable language_">$this</span></span><span>->name = </span><span><span class="hljs-variable">$name</span></span><span>;
}
}
</span><span><span class="hljs-variable">$person</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">Person</span></span><span>(</span><span><span class="hljs-string">"John"</span></span><span>);
</span><span><span class="hljs-comment">// examiner 'age' propriétéEst-ce qu'il existe并且已初始化</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">property_exists</span></span><span>(</span><span><span class="hljs-variable">$person</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span>) && </span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$person</span></span><span>->age)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"propriété 'age' exister并且已初始化。\n"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"propriété 'age' 不exister或未初始化。\n"</span></span><span>;
}
</span><span><span class="hljs-comment">// examiner 'name' propriétéEst-ce qu'il existe并且已初始化</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">property_exists</span></span><span>(</span><span><span class="hljs-variable">$person</span></span><span>, </span><span><span class="hljs-string">'name'</span></span><span>) && </span><span><span class="hljs-keyword">isset</span></span><span>(</span><span><span class="hljs-variable">$person</span></span><span>->name)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"propriété 'name' exister并且已初始化。\n"</span></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Property_exists est une fonction très pratique en PHP qui peut nous aider à vérifier si une certaine propriété d'un objet existe. Contrairement à l'accès directement à des propriétés, l'utilisation de Property_exists peut éviter efficacement les erreurs causées par l'accès à des propriétés inexistantes. Grâce à cette fonction, nous pouvons gérer l'existence ou l'absence de propriétés d'objet plus en toute sécurité, en particulier lorsque vous traitez des objets générés dynamiquement ou de l'incertitude des données.