2011-11-01 102 views
0

我有一个CodeIgniter项目,我想通过CLI调用我的一个控制器方法,但正常属性&连接到CI超级对象的方法似乎丢失了?通过CLI运行CodeIgniter脚本 - 缺失CI超级对象方法

例如,运行运行在正常的HTTP请求时完全没有下面的脚本产生一个错误:

class Worker extends MY_Controller { 

    public function __construct() { 
     if(php_sapi_name() !== 'cli') { 
      show_404(); 
     } 
    } 

    public function test(){ 

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

    } 
} 

这是威盛的CLI

<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;"> 

<h4>A PHP Error was encountered</h4> 

<p>Severity: Notice</p> 
<p>Message: Trying to get property of non-object</p> 
<p>Filename: controllers/worker.php</p> 
<p>Line Number: 21</p> 

</div>PHP Fatal error: Call to a member function library() on a non-object in /Users/casey/Documents/workspaces/vibecompass_live/application/controllers/worker.php on line 21 

Fatal error: Call to a member function library() on a non-object in /Users/casey/Documents/workspaces/vibecompass_live/application/controllers/worker.php on line 21 

我返回的错误这样调用脚本: $ php index.php工人测试

编辑

此外,此脚本:

class Worker extends MY_Controller { 

    public function __construct() { 
     if(php_sapi_name() !== 'cli') { 
      show_404(); 
     } 
    } 

    public function test(){ 

     $CI =& get_instance(); 
     var_dump($CI); die(); 

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

    } 
} 

返回:NULL

回答

2

它看起来像你没有初始化父类,在你的控制器构造函数,调用父类的构造以及:

class Worker extends MY_Controller { 

    public function __construct() { 
     parent::__construct(); 
     if(php_sapi_name() !== 'cli') { 
      show_404(); 
     } 
    } 
+0

我想拍我自己。谢谢。类似的问题,我只是没有想到。 – MikeMurko