我想保存一些全局变量以用于网站,例如当前用户ID,当前用户杠杆等。最好的地方在哪里,或者可能吗?CodeIgniter中的全局变量
将其设置为constants.php不起作用,因为“$ this”在此处不被识别。
主要的原因,我想这是因为我不喜欢使用会话(我考虑写串像$this->session->userdata('session_name')
不那么实用,写东西像CURR_UID是更容易做到这一点,阅读也一样)
我想保存一些全局变量以用于网站,例如当前用户ID,当前用户杠杆等。最好的地方在哪里,或者可能吗?CodeIgniter中的全局变量
将其设置为constants.php不起作用,因为“$ this”在此处不被识别。
主要的原因,我想这是因为我不喜欢使用会话(我考虑写串像$this->session->userdata('session_name')
不那么实用,写东西像CURR_UID是更容易做到这一点,阅读也一样)
这是可能的,但它不是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();
谢谢@rjz毕竟,我不能只是定义它,我必须使用类和功能...太糟糕了,但仍然更好,然后$ this-> ci-> session-> userdata ('用户名'); – GabrielCol 2012-03-06 20:56:58
你可以定义它,但是(正如你可以从上面的评论中猜到的那样)这些东西通常会在灾难中结束:-) – rjz 2012-03-06 21:03:11
在函数id()中,return缺少:)谢谢你的帮助! – GabrielCol 2012-03-06 21:12:54
在这种情况下你可以做的是创建一个class My_Controller extends CI_Controller
。在实际加载任何特定控制器功能之前,对所需的所有功能进行分类。
然后您创建的任何后续课程都可以这样做:class Whatever extends My_Controller
。
编辑:我忘了提及你应该把My_Controller
类放在Application> Core文件夹中。
呀完全。全球各地的总是更好。它的简单性比普通的面向对象原则更加实用,这些原则已经过多年和数年的战斗测试,并被该领域最聪明的头脑认可为最佳实践。 - ***叹息*** - – rdlowrey 2012-03-06 20:43:02
您想要处理IS会话数据的数据。所以,即使你不喜欢会议,这将是处理这些数据的最佳方式。 – 2012-03-06 20:43:44
会话甚至不能与全局变量相媲美。你在比较苹果和橙子 – zerkms 2012-03-06 20:45:12