我正在尝试从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));
我收到错误:
消息:未定义的变量:页面
这对我没有任何意义。发生了什么????
答案 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