代码点火器:一个区域中使用最多的方法

时间:2012-06-10 15:12:46

标签: php codeigniter dry

在我的CI控制器中,我有以下三个功能:

function _temp ($view,$data="") {
  $this->load->view('temp/nm-header',$data);
  $this->load->view($view,$data);
  $this->load->view('temp/footer',$data);
}

function _qs($val) {
  return $this->session->userdata($val);
}

function _qp($val) {
  return $this->input->post($val);
}

我想有一个中央控制器,而不是必须在我拥有的每个控制器中复制/粘贴这些方法。制作图书馆会不会成功?如果是的话......

$ci =& get_instance

如何使我的库类中的所有menthod都能使用上面的变量?

感谢。

2 个答案:

答案 0 :(得分:4)

无需创建库。相反,为您的常用方法创建一个名为MY_Controller的基本控制器,并让其他控制器从中扩展,如下所示:

MY_Controller:

class MY_Controller extends CI_Controller {

    function __construct() {
        parent::__construct();
    }

    function _temp ($view,$data="") {
        $this->load->view('temp/nm-header',$data);
        $this->load->view($view,$data);
        $this->load->view('temp/footer',$data);
    }

    function _qs($val) {
        return $this->session->userdata($val);
    }

    function _qp($val) {
        return $this->input->post($val);
    }

}

您想要访问常用方法的任何其他控制器:

class Some_controller extends MY_Controller {

    function __construct() {
        parent::__construct();
    }

    // _temp(), _qs(), and _qp() are now all available to any controller
    // that extends MY_Controller

}

答案 1 :(得分:0)

您可以创建自己的核心类并扩展CI类。 http://codeigniter.com/user_guide/general/core_classes.html