(PHP 5, PHP 7, PHP 8)
La classe ReflectionProperty rapporte des informations sur les propriétés des classes.
since: '8.5',message: "as it has no effect since PHP 8.1",$accessible): void Nom de la propriété. En lecture seule, lance une ReflectionException lors d'une tentative d'écriture.
Nom de la classe où la propriété a été définie. En lecture seule, lance une ReflectionException lors d'une tentative d'écriture.
ReflectionProperty::IS_STATIC
int
Indique que la propriété est
static.
Antérieur à PHP 7.4.0, la valeur était 1.
ReflectionProperty::IS_READONLY
int
Indique que la propriété est readonly. Disponible à partir de PHP 8.1.0.
ReflectionProperty::IS_PUBLIC
int
Indique que la propriété est
publique.
Antérieur à PHP 7.4.0, la valeur était 256.
ReflectionProperty::IS_PROTECTED
int
Indique que la propriété est
protégée.
Antérieur à PHP 7.4.0, la valeur était 512.
ReflectionProperty::IS_PRIVATE
int
Indique que la propriété est
privée.
Antérieur à PHP 7.4.0, la valeur était 1024.
ReflectionProperty::IS_ABSTRACT
int
Indique que la propriété est abstraite. Disponible à partir de PHP 8.4.0.
ReflectionProperty::IS_PROTECTED_SET
int
Disponible à partir de PHP 8.4.0.
ReflectionProperty::IS_PRIVATE_SET
int
Disponible à partir de PHP 8.4.0.
ReflectionProperty::IS_VIRTUAL
int
Disponible à partir de PHP 8.4.0.
ReflectionProperty::IS_FINAL
int
Indique que la propriété est finale. Disponible à partir de PHP 8.4.0.
Note:
La valeur de ces constantes peut changer entre les versions de PHP. Il est recommandé de toujours utiliser les constantes et de ne pas dépendre des valeurs directement.
| Version | Description |
|---|---|
| 8.4.0 | Les constantes de classe sont désormais typées. |
| 8.4.0 |
Ajout de ReflectionProperty::IS_VIRTUAL ,
ReflectionProperty::IS_PRIVATE_SET ,
ReflectionProperty::IS_PROTECTED_SET ,
ReflectionProperty::IS_ABSTRACT ,
et ReflectionProperty::IS_FINAL .
|
| 8.0.0 | ReflectionProperty::export() a été supprimée. |
I think a more accurate explanation is this:
The Reflection classes are designed to reflect upon the source code of an application, not on any runtime information.
I think you misunderstand the ReflectionProperty constructor in your example above. The fact that it accepts an object as argument is just a convenience feature - you are actually inspecting the class of that object, not the object itself, so it's basically equivalent to:
<?php
// works fine
$Reflection = new ReflectionProperty(get_class($a), 'a');
// throws exception
$Reflection = new ReflectionProperty(get_class($a), 'foo');
?>
Getting the class of the object you're passing in is implied, since inspecting a defined property is the purpose of this class.
In your example, $a->foo is a dynamic member - it is not defined as a member of class, so there is no defining class reference, line number, default value, etc. - which means, there is nothing to reflect upon.
Clearly this very useful library could use some real documentation...