Codeigniter MY_Controller:只能扩展一次核心吗?

pep*_*epe 4 php controller codeigniter

我已经使用CI的文档中描述的MY_Controller成功扩展了核心.

这样我就可以在MY_Controller的构造函数中放置一些重复的函数(即auth检查),这样它们总是在我的其他控制器的方法之前运行.

我现在的问题是我的webapp的某些部分是开放的(即,不需要登录)而其他部分需要登录.

因此,我无法从MY_Controller(包含auth检查功能)扩展我的所有控制器.

我想知道是否可以扩展核心以便拥有LOG_Controller和NOLOG_Controller.

然后,需要登录的控制器将从LOG_Controller扩展---并且不需要登录的控制器将从NOLOG_Controller扩展.

这是不可能的?(或者是不好的形式?)

似乎config/config.php只允许一个核心扩展名前缀,所以我不确定它是否可行.

让我知道你的想法或者是否有更好的方法来做到这一点.谢谢.

Aqu*_*laX 7

我使用以下技巧.在My_Controller.php中定义所有基本控制器:

<?php

class My_Controller extends CI_Controller{

}

class LOG_Controller extends My_Controller{

} 

class NOLOG_Controller extends My_Controller{

}
?>
Run Code Online (Sandbox Code Playgroud)

这使得所有已定义的控制器稍后在控制器中可用.只是避免使基本控制器太胖.

您也可以查看此示例:https://github.com/aquilax/novigeroi2/blob/master/application/core/AQX_Controller.php