将父班从被称为内部的子类扩展

  • 本文关键字:子类 扩展 内部 被称为 php
  • 更新时间 :
  • 英文 :


我在下面有此代码,这些代码只需从单独的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;

再次,这并不能用文件中的内容解决您的问题,因为我看不到您的文件。

最新更新