我正在创建一个应用程序,我将用户信息保存在我的代码点火器应用程序的用户控制器中的静态变量中,现在我想访问其他控制器中的静态变量,我该如何处理?我的代码在这里
<?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
答案 0 :(得分:0)
static::$user_data = array('value')
不应该是你的User类中的self :: ...吗?
答案 1 :(得分:0)
您的代码存在许多问题。
由于您已定义$user_data
是public static $user_data = array();
类顶部User
的数组,因此无需在第7行重新定义它,即self::$user_data = array('value');
第二个问题是$user_data
数组只包含一个元素'value'。我假设第15和第17行(User::$user_data->isFriends
和User::$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
尝试运行代码并让我知道正在显示哪些错误,我会尝试通过更新我的答案来解决它们