最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

PHP 动态实例化类时,提示Class “xxx” not found异常的解决办法。

网站源码admin10浏览0评论

PHP 动态实例化类时,提示Class “xxx” not found异常的解决办法。

PHP 可以通过变量动态实例化类,比如:

代码语言:javascript代码运行次数:0运行复制
$classname = "SubjectsImport";
$foobar = new $classname;

但是新手在使用这一功能时,几乎总会碰到类不存在的异常:

代码语言:javascript代码运行次数:0运行复制
message: "Class \"SubjectsImport\" not found"

即便我们已经通过 use 引用了要实例化的类,但是还是会报错:

代码语言:javascript代码运行次数:0运行复制
use App\Imports\SubjectsImport;

//直接使用类名实例化,可以正常运行
$foobar = new SubjectsImport();

//使用变量动态实例化类,即便已经引用了正确的类文件,仍然会报 class not found 的异常。
$classname = "SubjectsImport";
$foobar = new $classname;

这是因为在 php 中导入操作是在编译执行的,但动态的类名称、函数名称或常量名称则不是。因此我们如果需要动态实例化类,那么需要自己拼接好类的命名空间,下面的代码就可以正常运行了。

代码语言:javascript代码运行次数:0运行复制
$type = $this->payload['type'];
$class =  'App\\Imports\\ScienceResearch\\'.Str::ucfirst($type) . 'sImport';
$foo = new $class;
发布评论

评论列表(0)

  1. 暂无评论