从CI spark加载扩展控制器

时间:2013-06-24 11:27:53

标签: php codeigniter

我有一个CodeIgniter spark定义&自动加载类libraries/Nci_nicecontroller.php

class Nci_nicecontroller extends CI_Controller {
  //...
}
//autoloaded using $autoload['libraries'][]='nci_nicecontroller';

现在我想在我的应用程序控制器中使用Nci_nicecontroller,例如:

class Welcome extends Nci_nicecontroller {
  //...
}
//autoloaded using $autoload['sparks'][]='nci-extensions/0.0.4';
显然,我不能只在控制器的构造函数中$this->load->spark,因为它在类扩展时是必需的。

当不使用spark时,我只是将Nci_nicecontroller放在core/MY_Controller.php中,但是有了火花,这将无效。

我尝试在我的应用程序中自动加载火花,但这不起作用。

然后我尝试了:

get_instance()->load->spark('nci-extensions/0.0.4');
controllers/welcome.php标题中的

,它会出现以下错误:

Severity: Notice
Message: Trying to get property of non-object
Filename: controllers/welcome.php
Line Number: 2
    --and--
Fatal error: Call to a member function spark() on a non-object in
 C:\xampp\htdocs\CodeIgniter_demo\application\controllers\welcome.php on line 2

我该怎么办?

1 个答案:

答案 0 :(得分:0)

尝试做类似的事情:

class Wellcome extends CI_Controller {
  protected static $_nci = null;

  public function __construct(){
      parent::__construct();
      $this->_nci = $this->load->spark('nci-extensions/0.0.4');
  }

  public function index(){
      $result = $this->_nci->getSomething();
      echo $result;
  }

}