(PHP 5, PHP 7, PHP 8)
La clase ReflectionClass proporciona información sobre una clase.
Nombre de la clase. Solo lectura, lanza una ReflectionException al intentar escribir.
ReflectionClass::SKIP_INITIALIZATION_ON_SERIALIZE
int
ReflectionClass::SKIP_DESTRUCTOR
int
ReflectionClass::IS_IMPLICIT_ABSTRACT
int
Indica si la clase es abstracta porque contiene métodos abstractos.
ReflectionClass::IS_EXPLICIT_ABSTRACT
int
Indica si la clase es abstracta debido a su definición.
ReflectionClass::IS_FINAL
int
Indica si la clase es final.
ReflectionClass::IS_READONLY
int
Indica si la clase es readonly.
| Versión | Descripción |
|---|---|
| 8.4.0 | Las constantes de clase ahora están tipadas. |
| 8.0.0 | ReflectionClass::export() ha sido eliminada. |
To reflect on a namespaced class in PHP 5.3, you must always specify the fully qualified name of the class - even if you've aliased the containing namespace using a "use" statement.
So instead of:
<?php
use App\Core as Core;
$oReflectionClass = new ReflectionClass('Core\Singleton');
?>
You would type:
<?php
use App\Core as Core;
$oReflectionClass = new ReflectionClass('App\Core\Singleton');
?>Reflecting an alias will give you a reflection of the resolved class.
<?php
class X {
}
class_alias('X','Y');
class_alias('Y','Z');
$z = new ReflectionClass('Z');
echo $z->getName(); // X
?>Unserialized reflection class cause error.
<?php
/**
* abc
*/
class a{}
$ref = new ReflectionClass('a');
$ref = unserialize(serialize($ref));
var_dump($ref);
var_dump($ref->getDocComment());
// object(ReflectionClass)#2 (1) {
// ["name"]=>
// string(1) "a"
// }
// PHP Fatal error: ReflectionClass::getDocComment(): Internal error: Failed to retrieve the reflection object
?>In order to get class attributes look here (php8)
https://www.php.net/manual/en/language.attributes.reflection.php