Php 在CodeIgniter中使用抽象基控制器

Php 在CodeIgniter中使用抽象基控制器,php,codeigniter,Php,Codeigniter,我有一套控制器,只有当你是管理员(而不是普通用户)时才可以访问 因此,在每个控制器的构造函数中,我将执行以下操作: public function __construct() { parent::__construct(); if (! is_admin()) { show_404(); } } 除了将此代码添加到每个管理控制器的构造函数中,还有更好的方法吗 我在想我可以创建一个名为Admin\u controller的基本控制器,它看起来像这样: p

我有一套控制器,只有当你是管理员(而不是普通用户)时才可以访问

因此,在每个控制器的构造函数中,我将执行以下操作:

public function __construct() {
    parent::__construct();
    if (! is_admin()) {
         show_404();
    }
}
除了将此代码添加到每个管理控制器的构造函数中,还有更好的方法吗

我在想我可以创建一个名为
Admin\u controller
的基本控制器,它看起来像这样:

public class Admin_Controller extends CI_Controller {

    public function __construct() {
         //the above code goes here
    }
}
然后我的所有其他控制器都可以扩展这个类,而不是
CI\u Controller
类。唯一的问题是,我需要将此文件包含在其他控制器的顶部,否则CodeIgniter找不到
Admin\u控制器


有更好的方法吗?

我想你可以用
我也做了同样的事情,但我需要更精确的控制,所以我必须检查每个控制器。并非所有控制器都禁止单个用户使用。

将其放在您的应用程序/核心文件夹:MY_Controller.php(注意大写字母的正确使用)

然后在您希望用户登录的所有普通控制器中

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

谢谢。这很有效。然而,我怎么能有多个不同的基类来实现这个呢?例如,上面的类检查
是否为_admin()
。假设我想扩展另一个类,该类检查
是否为_member()
?我也在搜索类似的东西。我有一堆具有许多类似操作的选项控制器,我想将一些代码干燥成一个抽象控制器。但是,这个答案中的方法只允许一个抽象控制器…不是很多。如果你想拥有多个基类,请尝试Phil Sturgeon的这篇文章:干杯,Bart@Swerk这正是我所需要的。非常感谢。
class Whatever extends MY_Controller
{
   public function __construct() 
    {
         parent::__construct();
    } 
}