Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 通过CLI访问控制器时清空$this对象_Php_Codeigniter_Cron_Command Line Interface_Php 5.6 - Fatal编程技术网

Php 通过CLI访问控制器时清空$this对象

Php 通过CLI访问控制器时清空$this对象,php,codeigniter,cron,command-line-interface,php-5.6,Php,Codeigniter,Cron,Command Line Interface,Php 5.6,我在CodeIgniter中做一个Cron工作,我需要访问我的模型以执行它的任务。这是我的控制器代码 <?php /** * */ class Cron extends CI_Controller { function __construct() { if ( PHP_SAPI !== 'cli' ) exit('No web access allowed'); } public function send_mail() { $t

我在CodeIgniter中做一个Cron工作,我需要访问我的模型以执行它的任务。这是我的控制器代码

<?php
/**
* 
*/
class Cron extends CI_Controller
{
    function __construct() {
        if ( PHP_SAPI !== 'cli' ) exit('No web access allowed');
    }

    public function send_mail() {
        $this->load->model("mail_model");
        foreach ($this->mail_model->cron_job() as $mail) {
            echo $mail->id;
        }
    }
}
它返回以下错误:

Message:  Undefined property: Cron::$load
PHP Fatal error:  Call to a member function model() on null in /home/path/to/project/application/controllers/cron.php on line 12
如果我
var\u dump($this)
它返回一个空对象,因此我感到困惑,因为它正在扩展
CI\u控制器。

有什么想法吗?

错误说,什么是空的
$this->load
,而不是
$this
。 检查如何初始化
$this->load

编辑您的构造函数:

function __construct() {
    if ( PHP_SAPI !== 'cli' ) exit('No web access allowed');
    parent::__construct();
}

它扩展了CI_控制器,但CI_控制器代码在哪里?我没有看到include()或require()。@Octopus如何包含CI_控制器代码?在代码顶部附近,您可能需要这样一行:
require_once('path/to/fileCI_Controller.php')
,但我不确定该文件是否已经包含在某个WEHRE中,并且该Cron文件随后也包含在其中<代码>require_once()
require()
include_once()
include()
都是非常类似的函数,但有细微的差别,您应该检查您的引用以查看差别。尝试过“require'../system/core/Controller.php'并返回“找不到文件”错误。“$this”对象中没有“load”方法。这就是var_转储返回的结果。对象(Cron)#11(0){}您的代码试图使用
$this
的属性
load
:`$this->load->model(“邮件模型”);'是的,该属性应该在$this对象中,它是从CI_控制器类继承的。我无法在CLI中访问它的属性。我看到了在CI_控制器的构造函数中初始化的
load
:。因此,添加
parent::u construct()function __construct() {
    if ( PHP_SAPI !== 'cli' ) exit('No web access allowed');
    parent::__construct();
}