我在下面有此代码,这些代码只需从单独的PHP文件加载一个应该扩展父类Loader
父级
namespace Loader;
class Loader{
public function load($name){
$module_name = ucfirst($name);
require_once(__DIR__.'/'.$module_name.'.php');
return new $module_name;
}
public function parentFunction(){
return get_class($this);
}
}
$loader = new Loader;
catcha.php
namespace Loader;
class Captcha extends Loader{
public function callParentFunction(){
var_dump($this->parentFunction());
}
}
然后通过test.php
从装载机调用验证码require_once(__DIR__.'/Loader.php');
$loader->load('captcha')->callParentFunction();
它给我带来了这个错误:
致命错误:找不到类"加载器"
指向这条线
class Captcha extends Loader{
有任何帮助,建议?
特定错误意味着您可能在其他文件中可能有一些其他class Captcha
,这些文件不使用名称空间,并且已加载。在某个地方,您会在此类的两个不同的实现。
问题是您的验证码类不称为Captcha
,称为LoaderCaptcha
。由于您是从字符串中实例化的,因此该字符串需要包含类完全合格的名称。当前,您的代码正在寻找一个称为Captcha
的类,而不是LoaderCaptcha
。
执行$loader->load('LoaderCaptcha')
并在内部整理名称空间,或者内部添加名称空间:
$module_name = ucfirst($name);
$class = __NAMESPACE__ . '\' . $module_name;
require_once __DIR__ . '/' . $module_name . '.php';
return new $class;
再次,这并不能用文件中的内容解决您的问题,因为我看不到您的文件。