Maison >développement back-end >tutoriel php >Comment puis-je accéder aux propriétés des objets protégés dans les anciennes versions de PHP (pré-5.5) ?

Comment puis-je accéder aux propriétés des objets protégés dans les anciennes versions de PHP (pré-5.5) ?

DDD
DDDoriginal
2024-12-05 16:15:14269parcourir

How Can I Access Protected Object Properties in Older PHP Versions (Pre-5.5)?

Accéder aux propriétés des objets protégés en PHP

La programmation orientée objet de PHP fournit trois modificateurs d'accès : public, protégé et privé. Cependant, l’impossibilité d’accéder directement aux propriétés protégées peut être frustrante lorsque l’on travaille avec certains objets. Cet article explore une solution pour récupérer les propriétés protégées dans les versions PHP antérieures à 5.5.

ReflectionClass à la rescousse

Avant PHP 5.5, la classe ReflectionClass proposait une méthode pour accéder aux propriétés protégées. La fonction suivante montre comment :

function accessProtected($obj, $prop) {
  $reflection = new ReflectionClass($obj);
  $property = $reflection->getProperty($prop);
  $property->setAccessible(true);
  return $property->getValue($obj);
}

En utilisant cette fonction, vous pouvez accéder aux propriétés protégées en passant l'objet et le nom de la propriété comme arguments. Par exemple, étant donné l'objet dans votre exemple :

$value = accessProtected($obj, '_value');

Cette méthode récupérera efficacement la propriété _value protégée et la stockera dans la variable $value.

Remarque pour PHP 5.2 .17

Bien que la solution ReflectionClass ait été efficace dans votre environnement local, elle peut ne pas être disponible sur les serveurs exécutant la version PHP 5.2.17. Malheureusement, il n'existe aucune méthode alternative pour accéder aux propriétés protégées dans de telles versions de PHP.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn