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

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

Patricia Arquette
Patricia Arquetteoriginal
2024-12-09 11:36:16406parcourir

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

Accéder aux propriétés protégées en PHP sans réflexion

Obtenir les propriétés protégées d'un objet peut être difficile lorsque l'accès direct est restreint. Prenons l'exemple suivant :

class Fields_Form_Element_Location {
    protected $_value = 93399;
}

L'accès direct à $_value, tel que $obj->_value ou $obj->value, entraînera des erreurs.

Alternative Solution pour les versions PHP inférieures à 5.5

Étant donné que PHP Reflection n'est pas disponible dans les versions PHP inférieures à 5.5, une approche alternative consiste à utiliser la fonction get_class_vars() :

function accessProtected($obj, $prop) {
  $vars = get_class_vars(get_class($obj));
  return $vars[$prop];
}

En utilisant cette fonction, vous pouvez récupérer la valeur de la propriété protégée sans modifier ses paramètres d'accessibilité.

Exemple d'utilisation

$obj = new Fields_Form_Element_Location;
$value = accessProtected($obj, '_value');
echo $value; // Output: 93399

Cette méthode permet de récupérer des propriétés protégées dans les versions PHP qui ne supportent pas Reflection. Cependant, il est important de noter qu'il peut ne pas être applicable dans tous les cas, surtout si la propriété protégée est attribuée dynamiquement.

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