我有以下情况:
控制器:
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中使用它们吗?感谢
答案 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');