Running the following code on Windows Vista (I know, I know), PHP 5.3.9, the ReflectionClass constructor actually throws a ReflectionException when the desired class cannot be instantiated:
<?php
try {
$ReflectedClass = new ReflectionClass('NonExist');
} catch (LogicException $Exception) {
die('Not gonna make it in here...');
} catch (ReflectionException $Exception) {
die('Your class does not exist!');
}
?>
ReflectionClass::__construct
(PHP 5)
ReflectionClass::__construct — Construit une ReflectionClass
Description
ReflectionClass::__construct
( mixed
$argument
)Construit un nouvel objet ReflectionClass.
Avertissement
Cette fonction n'est pas documentée et seule la liste des arguments est disponible.
Liste de paramètres
-
argument -
Soit une chaîne de caractères contenant le nom de la classe à refléter, ou un objet.
Valeurs de retour
Aucune valeur n'est retournée.
Exemples
Exemple #1 Utilisation simple de ReflectionClass
<?php
Reflection::export(new ReflectionClass('Exception'));
?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
Class [ <internal:Core> class Exception ] {
- Constants [0] {
}
- Static properties [0] {
}
- Static methods [0] {
}
- Properties [7] {
Property [ <default> protected $message ]
Property [ <default> private $string ]
Property [ <default> protected $code ]
Property [ <default> protected $file ]
Property [ <default> protected $line ]
Property [ <default> private $trace ]
Property [ <default> private $previous ]
}
- Methods [10] {
Method [ <internal:Core> final private method __clone ] {
}
Method [ <internal:Core, ctor> public method __construct ] {
- Parameters [3] {
Parameter #0 [ <optional> $message ]
Parameter #1 [ <optional> $code ]
Parameter #2 [ <optional> $previous ]
}
}
Method [ <internal:Core> final public method getMessage ] {
}
Method [ <internal:Core> final public method getCode ] {
}
Method [ <internal:Core> final public method getFile ] {
}
Method [ <internal:Core> final public method getLine ] {
}
Method [ <internal:Core> final public method getTrace ] {
}
Method [ <internal:Core> final public method getPrevious ] {
}
Method [ <internal:Core> final public method getTraceAsString ] {
}
Method [ <internal:Core> public method __toString ] {
}
}
}
Voir aussi
- ReflectionObject::__construct() - Construit un nouvel objet ReflectionObject
- Les constructeurs
gafisher at griasolutions dot com ¶
1 year ago
ivo at jansch dot nl ¶
3 years ago
It's very useful to know that you can also use the ReflectionClass to inspect interfaces, even thouth Interfaces are not classes. Example:
<?php
interface Edible
{
public function eat();
}
$refl = new ReflectionClass("Edible");
$methods = $refl->getMethods();
?>
[Edit by danbrown AT php DOT net - Contains a bugfix by (dbl AT bnet DOT com) on 18-AUG-2010 with the following message: "underline had to be removed for it to work ( new Reflection_Class -> new ReflectionClass )"]
cspray at gmail dot com ¶
2 years ago
Useful to know that if you pass a string into the construct and the class cannot be instantiated for some reason a SPL LogicException will be thrown.
This code was ran on a Mac OS X 10.6.7, AMP, PHP 5.3+
<?php
// index.php
try {
$ReflectedClass = new ReflectionClass('NonExist');
} catch (LogicException $logicDuh) {
print_r($logicDuh);
}
?>
Will return a deeply nested array full of useful information about the error.
