我有代码 - 工作正确(我不需要包含类ReflectionClass):
class Test
{
const TYPE_ONE = "Number one";
const TYPE_TWO = "Number two";
static function getConstants() {
$oClass = new ReflectionClass(__CLASS__);
return $oClass->getConstants();
}
}
foreach (Test::getConstants() as $kay => $val):
echo "$kay -- $val <br/>";
endforeach;
但是,当我尝试在代码Yii2中使用ReflectionClass时,我得到了消息
PHP Fatal Error – yii\base\ErrorException
Class 'common\models\ReflectionClass' not found
如果框架中有任何Reflection类或在Yii2中声明ReflectionClass的方法
答案 0 :(得分:8)
因为yii2使用名称空间,当你调用new ReflectionClass()
php在你在文件的beginnig中声明的名称空间中查找这个类时,在你的情况下是namespace common\models;
要加载php的类,您需要在 \ 之前添加其名称。因此要实例化 ReflectionClass ,您需要编写new \ReflectionClass(__CLASS__)
。更多documentation