0

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

将其设置为 constants.php 不起作用,因为那里无法识别“$this”。

我想要这个的主要原因是因为我不喜欢使用会话(我认为写字符串$this->session->userdata('session_name')不太实用,写像 CURR_UID 这样的东西更容易做到,也更容易阅读)

4

2 回答 2

1

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

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

编辑:我忘了提到你应该把My_Controller类放在 Application > Core 文件夹中。

于 2012-03-06T20:47:02.807 回答
1

这是可能的,但这不是 Codeigniter 的设计方式。会话确实是这种事情的地方(即,从一个页面视图持续到下一个页面视图的内容),但如果你愿意,你可以将会话调用包装在一个库中以美观。像这样的东西:

// 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();
于 2012-03-06T20:47:23.067 回答