PHP 动态实例化类时,提示Class “xxx” not found异常的解决办法。
admin 阅读:160 2024-04-16
PHP 可以通过变量动态实例化类,比如:
$classname = "SubjectsImport";
$foobar = new $classname;但是新手在使用这一功能时,几乎总会碰到类不存在的异常:
message: "Class "SubjectsImport" not found"即便我们已经通过 use 引用了要实例化的类,但是还是会报错:
use AppImportsSubjectsImport;
//直接使用类名实例化,可以正常运行
$foobar = new SubjectsImport();
//使用变量动态实例化类,即便已经引用了正确的类文件,仍然会报 class not found 的异常。
$classname = "SubjectsImport";
$foobar = new $classname;这是因为在 php 中导入操作是在编译执行的,但动态的类名称、函数名称或常量名称则不是。因此我们如果需要动态实例化类,那么需要自己拼接好类的命名空间,下面的代码就可以正常运行了。
$type = $this->payload['type'];
$class = 'App\Imports\ScienceResearch\'.Str::ucfirst($type) . 'sImport';
$foo = new $class;声明
1、部分文章来源于网络,仅作为参考。 2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!



