您是否考虑过明确定义您的班级位置?有时将相关类分组很有意义。
这是一种经过验证的处理方法。
此代码放置在auto_prepend_file
(或包含在前面)中
class Import
{
public static $_AutoLoad = array();
public static $_Imported = array();
public static function Load($sName)
{
if(! isset(self::$_AutoLoad[$sName]))
throw new ImportError("Cannot import module with name '$sName'.");
if(! isset(self::$_Imported[$sName]))
{
self::$_Imported[$sName] = True;
require(self::$_AutoLoad[$sName]);
}
}
public static function Push($sName, $sPath)
{
self::$_AutoLoad[$sName] = $sPath;
}
public static function Auto()
{
function __autoload($sClass)
{
Import::Load($sClass);
}
}
}
在您的引导文件中,定义您的类以及它们所在的文件。
//Define autoload items
Import::Push('Admin_Layout', App::$Path . '/PHP/Admin_Layout.php');
Import::Push('Admin_Layout_Dialog', App::$Path . '/PHP/Admin_Layout.php');
Import::Push('FileClient', App::$Path . '/PHP/FileClient.php');
最后,通过调用启用 AutoLoad
Import::Auto()
一件好事是您可以定义“模块”:
Import::Push('MyModule', App::$Path . '/Module/MyModule/Init.php');
然后在需要时显式加载它们:
Import::Load('MyModule');
最好的部分之一是您可以Import::Push
在模块中添加额外的行,这将在运行时定义其所有类。