无法访问codeigniter模型中的变量

时间:2011-05-17 17:55:36

标签: php codeigniter model controller

我正在尝试从codeigniter控制器访问模型中的数组,并且事情是奇怪的。

目前我在模型中的所有内容都是:

class Pages_model extends CI_Model {
    function __construct()
    {
        parent::__construct();
    }

    var $pages = array(
        'draw', 'stackoverflow', 'words'
    );
}

我可以看到正在设置数组,因为当我执行

$this->load->model('Pages_model');
die(var_dump(get_object_vars($this->Pages_model)));

我得到了输出

array
  'pages' => 
    array
      0 => string 'draw' (length=4)
      1 => string 'stackoverflow' (length=13)
      2 => string 'words' (length=5)

但是当我尝试访问变量本身时:

 $this->load->model('Pages_model');
 die(var_dump($this->Pages_model->$pages));

我收到错误:

  

消息:未定义的变量:页面

这对我没有任何意义。发生了什么????

4 个答案:

答案 0 :(得分:5)

尝试$ this-> Pages_model->页面,不包含$ before页面。

执行此操作时:

$this->Pages_model->$pages

PHP尝试评估$ pages的变量,该变量为null(Pages_model-> null )。

答案 1 :(得分:0)

我不确定你是否可以直接访问模型中的变量我认为你只能调用函数,也许为变量创建一个getter函数并返回变量。例如

模型页面

function get_pages() {
   return this->pages;
}

<强>控制器

$pages = $this->Pages_model->get_pages();

答案 2 :(得分:0)

如果你这样定义,你可以直接访问变量:

class Pages_model extends CI_Model {
    function __construct()
    {
        parent::__construct();
        $this->pages = array(
        'draw', 'stackoverflow', 'words'
    );
    }

}

然后你可以通过:$this->pages_model->pages

来调用它

答案 3 :(得分:0)

制作静态成员:

class Model_name {
        static $member='nothing';
}
//and use it with scope resolution operator '::'
$m = new Model_name();
echo $m::member; //output: nothing
$m::member = 'something';
echo $m::member; //output: something