我正在使用的自动加载功能如下:-
function __autoload($moduleName)
{
//Logic to check file existence- include if exists else redirect to fallback page
}
它不需要任何其他论据吗?我想根据自动加载函数中的一些变量执行一些逻辑。在不使用全局变量的情况下如何做到这一点?
谢谢
额外细节
我认为这在 __autoload() 类中是不可能的,但仍然试图用一个例子来解释。
我有一个 modules.config 文件,它有一个数组:-
$viewClassMap = array('search_classes' => 'commonClassListings',
'search_packs' => 'commonPackListings',
);
上面的数组意味着在 search_classes 视图的情况下必须包含类 commonClassListings,在 search_packs 视图的情况下必须包含类 commonPackListings。对于所有其他视图,默认情况下,将包含 commonDisplay 类
function __autoload($viewName,$viewClassMap)
{
if(in_array($viewName,$viewClassMap))
{
$viewTobeIncluded = $viewClassMap[$viewName];
include path/to/$viewTobeIncluded;
}
else
{
include path/to/commonDisplay;
}
}
现在,我认为 __autoload 函数内部的逻辑必须移出,首先必须计算要加载的视图,然后只需要调用自动加载。这也是自动加载的目的(包括启动其对象的类文件)。
更新
我的自动加载功能不在我将在运行时启动其对象的视图类中(与 Blizz 的示例不同)。我在 pageLoader.php 文件中定义了一个常见的自动加载函数,该文件包含在常见的 froncontroller 中。对于每个模块,视图类的启动方式如下
$view = new search_classes();
然后通用自动加载功能必须检查相应的父视图类(在这种情况下为commonClassListings)是否存在,如果存在则包含它和search_classes视图本身并启动对象,否则回退。为此,我需要将$viewClassMap
数组传递给自动加载函数。那可能吗?