我想使用变量(字符串值)来调用Class。我可以做吗 ?我搜索PHP ReflectionClass但我不知道如何使用Reflection Result中的方法。像这样:
foreach($menuTypes as $key => $type){
if($key != 'Link'){
$class = new \ReflectionClass('\App\Models\\' . $key);
//Now $class is a ReflectionClass Object
//Example: $key now is "Product"
//I'm fail here and cannot call the method get() of
//the class Product
$data[strtolower($key) . '._items'] = $class->get();
}
}
答案 0 :(得分:3)
没有ReflectionClass:
$instance = new $className();
使用ReflectionClass:使用ReflectionClass::newInstance()
method:
$instance = (new \ReflectionClass($className))->newInstance();
答案 1 :(得分:3)
我发现了一个这样的
$str = "ClassName";
$class = $str;
$object = new $class();
答案 2 :(得分:2)
您可以直接使用,如下所示
$class = new $key();
$data[strtolower($key) . '._items'] = $class->get();
答案 3 :(得分:0)
风险是该类不存在。因此最好在实例化之前进行检查。
Php有一个内置方法来检查类是否存在。
$className = 'Foo';
if (!class_exists($className)) {
throw new Exception('Class does not exist');
}
$foo = new $className;
如果出现问题,一个很好的方法就是尝试并捕捉它。
$className = 'Foo';
try {
$foo = new $className;
}
catch (Exception $e) {
throw new MyClassNotFoundException($e);
}
$foo->bar();