admin管理员组文章数量:1033166
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;
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;
本文标签: PHP 动态实例化类时,提示Class “xxx” not found异常的解决办法
版权声明:本文标题:PHP 动态实例化类时,提示Class “xxx” not found异常的解决办法。 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1748011236a2241199.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论