在类

时间:2016-07-18 13:12:02

标签: codeigniter methods properties static controller

在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;来表达第一个结果。方法。我不知道我的代码中有什么错误可以用不同的方法检索静态属性 感谢您的支持!
艾万

2 个答案:

答案 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));
 }
}
?>