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
?>
La classe ReflectionClass
(PHP 5)
Introduction
La classe ReflectionClass rapporte des informations sur une classe.
Synopsis de la classe
ReflectionClass
implements
Reflector
{
/* Constantes */
/* Propriétés */
public
$name
;
/* Méthodes */
__construct
( mixed
}$argument
)Propriétés
- name
-
Nom de la classe. En lecture seule, émets une exception de type ReflectionException si l'on tente d'y écrire.
Constantes pré-définies
Modificateurs de ReflectionClass
Sommaire
- ReflectionClass::__clone — Clones un objet
- ReflectionClass::__construct — Construit une ReflectionClass
- ReflectionClass::export — Exporte une classe
- ReflectionClass::getConstant — Récupère une constante
- ReflectionClass::getConstants — Récupère les constantes
- ReflectionClass::getConstructor — Récupère le constructeur
- ReflectionClass::getDefaultProperties — Récupère les propriétés par défaut
- ReflectionClass::getDocComment — Récupère les commentaires
- ReflectionClass::getEndLine — Récupère la fin d'une ligne
- ReflectionClass::getExtension — Récupère des informations d'une extension
- ReflectionClass::getExtensionName — Récupère le nom d'une extension
- ReflectionClass::getFileName — Récupère le nom du fichier déclarant la classe considérée
- ReflectionClass::getInterfaceNames — Récupère les noms des interfaces
- ReflectionClass::getInterfaces — Récupère les interfaces
- ReflectionClass::getMethod — Récupère un objet ReflectionMethod
- ReflectionClass::getMethods — Récupère la liste des méthodes
- ReflectionClass::getModifiers — Récupère les modificateurs
- ReflectionClass::getName — Récupère le nom de la classe
- ReflectionClass::getNamespaceName — Récupère l'espace de noms
- ReflectionClass::getParentClass — Récupère la classe parente
- ReflectionClass::getProperties — Récupère les propriétés
- ReflectionClass::getProperty — Récupère une propriété
- ReflectionClass::getShortName — Récupère le nom court d'une classe
- ReflectionClass::getStartLine — Récupère le numéro de ligne de départ
- ReflectionClass::getStaticProperties — Récupère les propriétés statiques
- ReflectionClass::getStaticPropertyValue — Récupère la valeur d'une propriété statique
- ReflectionClass::getTraitAliases — Retourne un tableau des alias du trait
- ReflectionClass::getTraitNames — Retourne un tableau de noms des traits utilisés par cette classe
- ReflectionClass::getTraits — Retourne un tableau des traits utilisés par cette classe
- ReflectionClass::hasConstant — Vérifie si une constante est définie
- ReflectionClass::hasMethod — Vérifie si une méthode est définie
- ReflectionClass::hasProperty — Vérifie si une propriété est définie
- ReflectionClass::implementsInterface — Vérifie si une classe implémente une interface
- ReflectionClass::inNamespace — Vérifie si une classe est définie dans un espace de noms
- ReflectionClass::isAbstract — Vérifie si une classe est abstraite
- ReflectionClass::isCloneable — Renseigne à propos de la propriété de duplication de la classe
- ReflectionClass::isFinal — Vérifie si une classe est finale
- ReflectionClass::isInstance — Vérifie si une classe est une instance d'une autre classe
- ReflectionClass::isInstantiable — Vérifie si une classe est instanciable
- ReflectionClass::isInterface — Vérifie si une classe est une interface
- ReflectionClass::isInternal — Vérifie si une classe est une classe interne
- ReflectionClass::isIterateable — Vérifie si la classe est itérable
- ReflectionClass::isSubclassOf — Vérifie si la classe est une sous-classe
- ReflectionClass::isTrait — Renseigne s'il s'agit d'un trait
- ReflectionClass::isUserDefined — Vérifie si une classe a été définie dans l'espace utilisateur
- ReflectionClass::newInstance — Créer une nouvelle instance de la classe en utilisant les arguments fournis
- ReflectionClass::newInstanceArgs — Créer une nouvelle instance en utilisant les arguments fournis
- ReflectionClass::newInstanceWithoutConstructor — Crée une nouvelle instance de la classe sans invoquer le constructeur
- ReflectionClass::setStaticPropertyValue — Définit la valeur d'une propriété statiques
- ReflectionClass::__toString — Crée une représentation textuelle de l'objet
Anonymous
11-Nov-2011 09:58
thecelavi at gmail dot com
30-Nov-2009 04:07
Right:
<?php
use AppCore as Core;
$oReflectionClass = new ReflectionClass('App\Core\Singleton');
?>
Wrong:
<?php
use AppCore as Core;
$oReflectionClass = new ReflectionClass('\App\Core\Singleton');
?>
danbettles at yahoo dot co dot uk
29-Mar-2009 02:48
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 AppCore as Core;
$oReflectionClass = new ReflectionClass('Core\Singleton');
?>
You would type:
<?php
use AppCore as Core;
$oReflectionClass = new ReflectionClass('App\Core\Singleton');
?>
