запуск сценария CodeIgniter через CLI - отсутствуют методы суперобъекта CI - PullRequest
0 голосов
/ 01 ноября 2011

У меня есть проект CodeIgniter, и я хочу вызвать один из моих методов контроллера через CLI, но нормальные свойства и методы, которые прикреплены к суперобъекту 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

1 Ответ

2 голосов
/ 01 ноября 2011

Похоже, что вы не инициализировали родительский класс, в конструкторе контроллеров также вызовите родительский конструктор:

class Worker extends MY_Controller {

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