繁体   English   中英

自动加载不适用于变量

[英]Autoloading doesn't work with variable

我想用一个变量自动加载一个类,但是它不起作用。 有人可以帮我吗? 我有一个文件夹foo,其中包含类A和包含5个类(类B,类C,...)的子文件夹subfoo。

在AI班上,我想使用这些班级,当我这样做时:

$obj = new classB(); 

一切正常。 当我这样做时:

$name = 'ClassB';
$obj = new $name();

有用。 当我将B类从子文件夹移动到foo文件夹时,第二个脚本也起作用。

有人可以帮我吗?

在这种情况下,我不认为这是您实例化对象的方式,而是您如何自动加载类的方式。

在这一点上,我将假设您了解php允许您自动加载类的功能 如果您不这样做,那么我需要知道您进行了哪些设置(框架?任何帮助程序类?),因为这可能正在为您进行自动加载。

似乎您需要配置自动加载功能。

这是我认为您的自动加载功能看起来像的基本示例:

function my_autoloader($class) {

    $file = $class . '.class.php'; // E.g. ClassB.class.php

    if(file_exists($file)) {
        require_once($file);
    }

}

spl_autoload_register('my_autoloader');

在这种情况下,它将检查当前的工作目录以查看文件{$class}.class.php存在。

在上述方案中,您提到将类移到子目录subfoo 因此,您将需要更改自动加载器功能以反映新的子目录,因为除非您告知PHP,否则PHP不会考虑深入目录结构:

    $file = 'subfoo/' . $class . '.class.php'; // Same E.g. will now look for subfoo/ClassB.class.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM