[英]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.