返回首页 - Notes - 2014

更好地使用 CodeIgniter


开发模式下开启性能分析

application/core 下新建一个文件,命名为 MY_Controller.php,在里面写入以下内容:

<?php

class MY_Controller extends CI_Controller {

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

        // 开发模式下开启性能分析
        if (ENVIRONMENT === 'development') {
            $this->output->enable_profiler(TRUE);
        }
    }

}

简化模版渲染的调用

MY_Controller 头部和 __construct 函数中添加以下内容,用于设定默认的模版信息,其中 SITE_NAME 需要自己在 application/config/constants.php 里面自己定义:

<?php

class MY_Controller extends CI_Controller {

    protected $_data;    // 模版传值数组
    protected $_tplext;  // 默认模版后缀
    protected $_header;  // 默认头部模版
    protected $_footer;  // 默认底部模版


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

        $this->_data['title'] = SITE_NAME;
        $this->_tplext = '.php';
        $this->_header = 'templates/header';
        $this->_footer = 'templates/footer';

        // 开发模式下开启性能分析
        if (ENVIRONMENT === 'development') {
            $this->output->enable_profiler(TRUE);
        }
    }

}

自定义视图函数

新增一个 protected 方法 _view,用于简化模版调用:

<?php

class MY_Controller extends CI_Controller {

    protected $_data;    // 模版传值数组
    protected $_tplext;  // 默认模版后缀
    protected $_header;  // 默认头部模版
    protected $_footer;  // 默认底部模版


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

        $this->_data['title'] = SITE_NAME;
        $this->_tplext = '.php';
        $this->_header = 'templates/header';
        $this->_footer = 'templates/footer';

        // 开发模式下开启性能分析
        if (ENVIRONMENT === 'development') {
            $this->output->enable_profiler(TRUE);
        }
    }


    /**
     * 自定义视图函数
     */
    protected function _view ($tpl) {
        $this->load->view($this->_header.$this->_tplext, $this->_data);
        $this->load->view($tpl.$this->_tplext, $this->_data);
        $this->load->view($this->_footer.$this->_tplext, $this->_data);
    }

}

配置后控制器的使用方法

新增的控制器不再继承 CI_Controller,而改继承 MY_Controller

<?php

class Index extends MY_Controller {

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


    /**
     * 前台首页
     */
    public function index () {
        $this->_data['title'] = '首页';  // 不指定则使用默认标题 SITE_NAME
        $this->_view('index/index');
    }

}

date : 2014-04-29