En PHP, accéder aux propriétés protégées d'un objet à l'aide du -> l’opérateur directement n’est pas autorisé. Cela peut être un défi lorsque vous devez travailler avec ces propriétés.
Si vous utilisez une ancienne version de PHP, telle que 5.2.17, utiliser la méthode ReflectionClass pour accéder aux propriétés protégées n'est pas une option.
Solution :
Heureusement, il existe une solution relativement simple pour cela issue:
function accessProtected($obj, $prop) { $reflection = new ReflectionClass($obj); $property = $reflection->getProperty($prop); $property->setAccessible(true); return $property->getValue($obj); }
Cette fonction prend deux paramètres : l'objet contenant la propriété protégée et le nom de la propriété à laquelle vous souhaitez accéder. Il utilise la classe ReflectionClass pour créer un reflet de l'objet, puis utilise la méthode getProperty() pour obtenir la propriété spécifique. Enfin, il définit l'accessibilité de la propriété sur true à l'aide de la méthode setAccessible(), puis récupère la valeur à l'aide de la méthode getValue().
Exemple d'utilisation :
$obj = new Fields_Form_Element_Location(); $currentValue = accessProtected($obj, '_value');
Mises en garde :
Notez que cette solution n'est pas universellement compatible. Certains frameworks PHP ou implémentations d'objets spécifiques peuvent avoir des restrictions supplémentaires qui empêchent l'accès externe aux propriétés protégées. Il est toujours conseillé de vérifier la documentation de votre framework ou bibliothèque d'objets pour vérifier la compatibilité avant d'utiliser cette technique.
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!