(PHP 5)
ReflectionClass::__construct — 构造一个 ReflectionClass 类
$argument
)构造一个新的 ReflectionClass 对象。
本函数还未编写文档,仅有参数列表。
没有返回值。
Example #1 ReflectionClass 的基本用法
<?php
Reflection::export(new ReflectionClass('Exception'));
?>
以上例程的输出类似于:
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 ] { } } }
gafisher at griasolutions dot com (2012-01-30 01:23:31)
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!');
}
?>
cspray at gmail dot com (2011-06-12 19:14:26)
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.
ivo at jansch dot nl (2010-01-24 04:16:33)
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 )"]