选择性PHP自动加载

Ext*_*kun 0 php

我正在编写一个与现有PHP应用程序集成的附加模块; 因为我使用的是MVC模式,并且可能需要大量包含类(根据用户的操作可能根本不使用),所以我决定使用类的自动加载.

但是,我必须确保自动加载功能不会干扰现有应用程序的正常操作.

  1. 如果没有定义类名,autoload是否只会启动?

  2. 假设我必须编写另一个使用自己的自动加载功能的模块(比方说,我有一个模块的自动加载,因为它们都位于自己的文件夹中),我如何区分它的模块?

对于#2,我想到了2个选项.使用模块名称(例如'MyNewModule_View_Default'和'AnotherModule_View_Default')为类名添加前缀,或使用file_exists检查包含文件是否存在.

其他建议也受到欢迎!

sel*_*oup 6

  1. class_exists()在自动加载器实现中实际加载它之前,只需检查要加载的类是否已存在.特别是如果您有多个注册的自动加载器(见2).

  2. 您可以通过堆栈指定多个自动加载器spl_autoload_register().已注册的函数按其注册顺序执行,直到成功加载类为止.例如,您可以为不同的模块指定不同的自动加载器.或者,如果您可以控制类名,则可以像Zend_Framework中那样执行命名空间方法.