0

CodeIgniterプロジェクトがあり、CLIを介してコントローラーメソッドの1つを呼び出したいのですが、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 worker test

編集

さらに、このスクリプト:

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

4

1 に答える 1

2

親クラスを初期化していないようです。コントローラーコンストラクターで、親コンストラクターも呼び出します。

class Worker extends MY_Controller {

    public function __construct() {
        parent::__construct();
        if(php_sapi_name() !== 'cli') {
            show_404();
        }
    }
于 2011-11-01T00:46:38.760 に答える