在Codeigniter中调整抽象类

时间:2015-06-30 16:00:29

标签: php codeigniter class

我有以下情况:

控制器:

class Collect extends CI_Controller {

    function __construct() {
        parent::__construct();

        $this->load->library('phirehose');
        $this->load->library('oauthphirehose');
        $this->load->library('ghettoqueuecollector');
    }

    function index() {
        // Start streaming/collecting
    $this->ghettoqueuecollector('datos');
...
}

类别: A)

class Ghettoqueuecollector extends Oauthphirehose {
...
}

B)

abstract class Oauthphirehose extends Phirehose {
...
}

C)

abstract class Phirehose {
...
}

当我尝试使用控制器时出现此错误: "致命错误:无法实例化抽象类Phirehose"

缺乏适应性?这些类之外的Codeigniter使用require。我可以在CI中使用它们吗?感谢

1 个答案:

答案 0 :(得分:2)

$this->load->library()包含,实例化和配置类,它不仅仅是require()的别名 - 您不能以这种方式使用它。

如果需要扩展抽象类,则必须从扩展它的文件中手动包含/要求它,如下所示:

库/ Oauthphirehose.php:

require_once __DIR__.'/Phirehose.php';

abstract class Oauthphirehose extends Phirehose {}

库/ Ghettoqueuecollector.php:

require_once __DIR__.'/Oauthphirehose.php';

class Ghettoqueuecollector extends Oauthphirehose {}

然后你只需加载实际需要实例化的一个库:

$this->load->library('ghettoqueuecollector');