控制器成员变量会丢失值 怎么回事?
我想用控制器的成员变量记录一些信息,示例代码如下:class test extends CI_Controller {
private $data;
public function set($i) {
$this->data = $i;
$data = $this->data;
echo "设置data为:$data";
echo anchor('test/get', '查看data');
}
public function get() {
$data = $this->data;
echo "data为:$data";
}
}
但是我用URL调用set()函数设定好$this->data的值之后,再用URL调用get(),结果总是发现 $this->data 没有值,页面显示只有:
data为:
后面没了。。。。
后来我怀疑是这样的:CI每次用URL调用test的成员函数时,都会生成新的test类实例,因此两个函数中 $this->data 对应不同实例中的成员$data。所有就对程序做了如下改动(把$data由成员改为了静态成员):
class test extends CI_Controller {
static private $data;
public function set($i) {
self::$data = $i;
$data = self::$data;
echo "设置data为:$data";
echo anchor('test/get', '查看data');
}
public function get() {
$data = self::$data;
echo "data为:$data";
}
}
但是还是不行,结果一样。这就感觉有点无法解释了。。。
请问大家该怎么解决! 可以用 session 来传递值 qq494686707 发表于 2012-8-22 18:14 static/image/common/back.gif
可以用 session 来传递值
嗯,我也想过这个方案,主要觉得没有直接用类成员传值优雅快捷、不易混淆
页:
[1]