Codeigniter:HELPERS和$ CI =& get_instance();

时间:2012-12-02 08:41:41

标签: php codeigniter libraries helpers controllers

我有一些功能可以管理控制器文件中某些控制器的访问级别。

我决定将它们带到图书馆或帮助者那里。

由于他们大多是程序性的,所以我决定使用帮手。

这是控制器文件中的原始方法(其他是access_level_member,access_level_moderator等)

  function access_level_admin() {

    if (!$this->session->userdata('loggedin')) {
        $this->session->set_flashdata('warning', 'Not logged in.');
        redirect('/start_page', 'refresh');
    }
    if (!$this->session->userdata('admin')) {
        $this->session->set_flashdata('warning', 'Access Denied!');
        redirect('/start_page', 'refresh');
    }  

这是帮助者。

function access_level_admin() {
    $CI =& get_instance();
    if (!$CI->session->userdata('loggedin')) {
        $CI->session->set_flashdata('warning', 'Not logged in.');
        redirect('/start_page', 'refresh');
    }
    if (!$CI->session->userdata('admin')) {
        $CI->session->set_flashdata('warning', 'Access Denied!');
        redirect('/start_page', 'refresh');
    }  

所以我的问题是,将它放在库或帮助器中是否更好?是否可以使用$ CI =& get_instance();帮助者。

有更好的想法或建议吗?

1 个答案:

答案 0 :(得分:3)

我会将逻辑放在父控制器中并让控制器扩展它。

class Authenticated_Controller extends CI_Controller {
    public function __construct() {
        parent::__construct();
        if (!$this->session->userdata('loggedin')) {
            $this->session->set_flashdata('warning', 'Not logged in.');
            redirect('/start_page', 'refresh');
        }
}

class Admin_Controller extends Authenticated_Controller {
    public function __construct() {
        parent::__construct();
        if (!$this->session->userdata('admin')) {
            $this->session->set_flashdata('warning', 'Access Denied!');
            redirect('/start_page', 'refresh');
        }
}