【发布时间】:2023-03-29 13:41:01
【问题描述】:
我目前正忙于一个大型 WordPress 插件,它由几个类和接口组成(使用正确的命名空间)。根据研究以及我从以前的问题中得到的答案,最好的选择是使用接口注入(依赖注入)来维护 SOC。在这个阶段,一切都按预期工作。
我现在需要将所有内容整合到一个主类中,该主类将用作控制器。此时,为了测试所有内容,我使用require_once 来加载我的类和接口(文件位于名为functions 的文件夹中)
示例:
require_once( '/functions/INTERFACEA.php' );
require_once( '/functions/CLASSA.php' );
require_once( '/functions/INTERFACEB.php' );
require_once( '/functions/CLASSB.php' );
//etc
我听说过自动加载器,但不完全了解如何在控制器类中使用它们。我真正需要避免的一个问题是类在其接口之前加载,因为如果加载顺序错误,我会收到一个致命错误,指出我的接口不存在。
我的问题:
如何正确使用控制器类中的自动加载器来加载我的类和接口,同时确保我的接口在它们各自的类之前加载
【问题讨论】:
-
如果你使用命名空间,你可以简单地把东西放在相应的文件夹
\Goosen\interfaces\InterfaceA、\Goosen\interfaces\InterfaceB、\Goosen\classes\ClassA等,然后把它们放在lib/goosen/interfaces/InterfaceA.php。在您的自动加载器中,您可以简单地检查当前尝试自动加载的类是否属于“Goosen”命名空间,然后您就会知道路径。 “这也确保我的接口在它们各自的类之前加载”这不是必需的 - 自动加载器也会处理其他类,包括依赖项。
标签: php oop autoloader