在项目中经常用到这样一种情况,后台中每个页面都要判断 Session 来确定用户是否登陆状态.对于在 Codeigniter 中,那么就会考虑每个控制器继承一个公用控制器。

比如:AdminBase 为应用后台的公用的控制器,在每一个应用后台控制器里面都来继承公共的 AdminBase ,但是同时要确保 AdminBase 也是继承 CI_Controller 的。 前台 HomeBase 也是同样的道理。

具体实现很简单,只要在 application/core 下面新建 MY_Controller.php,如下

(MY*是可配置的,application/config/config.php 文件并找到这一项:$config['subclass_prefix'] = 'MY*';

class MY_Controller extends CI_Controller
{
function  __construct()
{
parent::__construct();
}
}

class AdminBase extends MY_Controller
{
function  __construct()
{
parent::__construct();
......
}
......
}

class HomeBase extends MY_Controller
{
function  __construct()
{
parent::__construct();
......
}
......
}

然后在 application/controllers 里面的控制器就可以继承了,比如 application/controllers/admin/blog.php 中

class Blog extends AdminBase
{

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

前台是同样的道理。

转载请注明: 转载自Ryan 是菜鸟 | LNMP 技术栈笔记

如果觉得本篇文章对您十分有益,何不 打赏一下

谢谢打赏

本文链接地址: Codeigniter 控制器的继承问题。

知识共享许可协议 本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可