CodeIgniter中的全局变量

时间:2012-03-06 20:40:51

标签: php codeigniter globals

我想保存一些在网站中使用的全局变量,例如当前用户ID,当前用户杠杆等。哪个地方最好,或者有可能吗?

将其设置为constants.php无效,因为“$ this”在那里无法识别。

我想要这个的主要原因是因为我不喜欢使用会话(我认为编写像$this->session->userdata('session_name')这样的字符串不那么实用,写一些类似CURR_UID的东西更容易做到并且读取也是如此)< / p>

2 个答案:

答案 0 :(得分:1)

在这种情况下,您可以创建一个class My_Controller extends CI_Controller。在实际加载任何特定控制器功能之前,整理出所需的所有功能。

然后您创建的任何后续课程都可以:class Whatever extends My_Controller

编辑:我忘了你应该把My_Controller类放在Application&gt;中核心文件夹。

答案 1 :(得分:1)

这是可能的,但它不是Codeigniter的设计方式。会话真的是这种事情的地方(即,从一个页面视图到下一个视图持续存在的东西),但如果你愿意,你可以wrap the session calls up in a library为了美丽的缘故。像这样:

// in libraries/User.php
class User {

  protected $ci;

  public function __construct() {
    $this->ci = &get_instance();
  }

  public function id() {
    return $this->ci->session->userdata('user_id');
  }

  // etc, etc.
}

一旦你写了一些像id()这样的帮手,你可以用它们来访问应用程序中其他地方的相关变量:

$this->load->library('user');
echo 'Current user ID is: ' . $this->user->id();