将方法移出Codeigniter控制器


Moving methods out of Codeigniter controller

我在一个Codeigniter控制器中得到了这个。但我希望其他控制器可以访问它,但我认为$this关键字将有不同的含义,同时它需要指代它加载到的控制器。

function checkSecurity($user, $page)
{
    if($this->mod_backend->canUserAccessPage($user, $page))
    {
        $this->load->view('header');
        $this->load->view($page, $data);
        $this->load->view('footer');       
    }
    else
    {
        $this->load->view('header');
        $this->load->view('unauthorised', $data);
        $this->load->view('footer');               
    }
}

如果您需要应用程序中的所有控制器都可以访问一个方法,您可以在MY_Controller.php文件中实现一个类,然后所有控制器都必须扩展这个类,而不是CI_Controller

例如在MY_Controller.php 中

<?php
class My_Controller extends CI_Controller{
    public function checkSecurity($user, $page)
    {
        if($this->mod_backend->canUserAccessPage($user, $page))
        {
            $this->load->view('header');
            $this->load->view($page, $data);
            $this->load->view('footer');       
        }
        else
        {
            $this->load->view('header');
            $this->load->view('unauthorised', $data);
            $this->load->view('footer');               
        }
    }
}

然后在你的控制器中,你必须扩展这个类:

<?php
class Other_Controller extends My_Controller{
   //Do the stuff
   //You can call your function in every controller
   $this->checkSecurity('my_user', 'my_page');

}