在不同的控制器中使用静态变量

时间:2014-09-10 13:52:41

标签: php codeigniter static-variables

我正在创建一个应用程序,我将用户信息保存在我的代码点火器应用程序的用户控制器中的静态变量中,现在我想访问其他控制器中的静态变量,我该如何处理?我的代码在这里

<?php 
     class User extends CI_Controller{
          public static $user_data = array();
          public __construct()
          {
               parent::__construct();
               self::$user_data = array('value'); // values from the model
          }
     }
     // now i can user that static variable from the view in this controller
     class Friends extends CI_Controller{
          public __construct()
          {
               parent::__construct();
               if(User::$user_data->isFriends)
               {
                     redirect('person/'.User::$user_data->id);
               }
          }
     }
     // how can i access this functionality in codeigniter? it gives error undefined class User not found

2 个答案:

答案 0 :(得分:0)

static::$user_data = array('value')

不应该是你的User类中的self :: ...吗?

答案 1 :(得分:0)

您的代码存在许多问题。

由于您已定义$user_datapublic static $user_data = array();类顶部User的数组,因此无需在第7行重新定义它,即self::$user_data = array('value');

第二个问题是$user_data数组只包含一个元素'value'。我假设第15和第17行(User::$user_data->isFriendsUser::$user_data->id),你正在寻找两个元素,'isFriends'和'id',这些元素将不存在。

这让我想到了另一个问题,你用来获取$user_data数组元素的语法将无效。语法“->”后跟属性名称用于类型Object的变量,不能用于关联数组。

相反,您应该使用 - 例如 - $user_data['isFriends']

我已在下面更新了您的代码......

<?php 
 class User extends CI_Controller{
      public static $user_data = array();
      public __construct()
      {
           parent::__construct();
           // this does the same thing as self::$user_data = array('value');
           // but without unnecessarily declaring the array again.
           self::$user_data[] = 'value';
      }
 }
 // now i can user that static variable from the view in this controller
 class Friends extends CI_Controller{
      public __construct()
      {
           parent::__construct();
           if(User::$user_data['isFriends'])
           {
                 redirect('person/'.User::$user_data['id']);
           }
      }
 }
 // how can i access this functionality in codeigniter? it gives error undefined class User not found

尝试运行代码并让我知道正在显示哪些错误,我会尝试通过更新我的答案来解决它们