在CodeIgniter框架中使用静态类属性时出现问题
我使用当前的' Welcome_message'仅用于使用数组作为类的输入来查看调试目的。
我想使用名为' data'的私有静态属性。由不同的类功能使用(在同一个控制器中)
请参阅下面的代码:
<?php class Test_dev extends CI_Controller
{
private static $data='';
public function change()
{
self::$data= array('test1'=>'data1','test2'=>'data2');
$this->load->view('welcome_message',array('output'=>self::$data));
}
public function check()
{
$this->load->view('welcome_message',array('output'=>self::$data));
}
}
?>
在调用方法时,请更改&#39;在我的控制器 / test_dev / change 中我得到了良好的行为,静态$ data属性被修改并可检索。
我获得了:
array(2){[&#34; test1&#34;] =&gt; string(5)&#34; data1&#34; [&#34; TEST2&#34;] =&GT; string(5)&#34; data2&#34; }
但使用方法&#39;检查&#39;, / test_dev / check 时,我只获取初始值$数据。
string(0)&#34;&#34;
我正在通过使用&#39;检查&#39;来表达第一个结果。方法。我不知道我的代码中有什么错误可以用不同的方法检索静态属性
感谢您的支持!
艾万
答案 0 :(得分:0)
您必须注意将哪些数据放入视图中。在检查功能中,您为自我静态属性中定义的 self :: $ data 设置相同的空值。像在更改功能中那样放置一些数据,然后检查功能会返回一些值......
答案 1 :(得分:0)
最后,我通过在CodeIgniter中使用Cookie Helper来传递和检索变量$ data来找到解决方案
请参阅我的最终代码:
<?php
class Test_dev extends CI_Controller
{
private static $data='';
public function __construct()
{
parent::__construct();
$this->load->helper('cookie');
}
public function change()
{
self::$data= array('test1'=>'data1','test2'=>'data2');
set_cookie('test',serialize(self::$data),time()+3600);
$this->load->view('welcome_message',array('output'=>self::$data));
}
public function check()
{
$test = unserialize($_COOKIE['test']);
$this->load->view('welcome_message',array('output'=>$test));
}
}
?>