Php 从Codeigniter控制器移出的方法

Php 从Codeigniter控制器移出的方法,php,codeigniter,Php,Codeigniter,我在我的一个Codeigniter控制器中得到了这个。但我希望其他控制器可以访问它,但我认为$this关键字有不同的含义,同时它需要引用它加载到的控制器 function checkSecurity($user, $page) { if($this->mod_backend->canUserAccessPage($user, $page)) { $this->load->view('header'); $this->l

我在我的一个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\u Controller.php
文件中实现一个类,然后您的所有控制器都必须扩展该类,而不是
CI\u 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');               
        }
    }

}

这样做的另一个好处是,您可以在MY_控制器构造函数中执行您希望在每次加载页面时都执行的操作,而不考虑加载页面的控制器。是的,只记得在控制器调用父对象中::_construct();
<?php

class Other_Controller extends My_Controller{
   //Do the stuff

   //You can call your function in every controller
   $this->checkSecurity('my_user', 'my_page');


}