我有一系列课程:
$array_items = [
'User\Name',
'Item\Name'
];
我需要从每个方法执行一个方法,如:
foreach ($array_items as $class)
(new $class)->get();
endforeach;
但是这样会抛出一个错误“无法重新声明类User / Name”,就是这样。
如果我试试这个,那没关系(当然它输出用户/名称两次):
foreach ($array_items as $class)
(new \User\Name)->get();
endforeach;
为什么会发生这种情况或解决方法?
答案 0 :(得分:1)
如果在使用sed -n "/$a/,/$b/p" abc.txt
创建它们的实例时定义了类,则意味着该类的代码由PHP"自动加载器加载#34;。
如果您在执行new
时遇到定义课程的错误,则表示您的自动加载器中存在错误。
在这种情况下,错误消息暗示当您执行new
时,自动加载器会错误地打开new Item\Name
类的文件。打开此文件时,PHP会尝试运行它,并抛出错误,因为已经定义了类。
您还没有向我们提供自动加载器代码,因此我无法为您提供准确的修复,但解决方案是修改代码,尝试找到类文件以确保加载正确的文件。
如果您的程序的文件结构和自动装带器的编写符合PSR标准,则不会出现此问题。 PSR标准声明应该组织类的文件,使其文件夹结构与命名空间匹配。这样可以轻松编写始终找到正确文件的自动加载器。存在许多此类自动加载器,实际上,如果您将Composer工具用于第三方库,那么它还为您的应用程序提供了符合PSR标准的自动加载器,因此您不需要自己编写。