おそらく、その問題に対するいくつかのアプローチが見つかるでしょう。それは、要件と、機能がモジュールでどのように公開および配布されるかによって異なります。
私の場合、コントローラーごとにアクセス制御が与えられていたので、コンストラクターでアクセスをチェックできる抽象コントローラーを定義しました。
class User_Controller extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->auth->is_logged_in() || RedirectToLogin();
}
}
class SuperUser_Controller extends User_Controller {
public function __construct()
{
parent::__construct();
$this->auth->is_superuser() || RedirectToBadUser();
}
}
class Admin_Controller extends User_Controller {
public function __construct()
{
parent::__construct();
$this->auth->is_admin() || RedirectToBadUser();
}
}
あなたの仕様に基づいてis_logged_in、is_superuser()、およびis_admin()を解決し、必要なレベルに応じてコントローラーをそれらのいずれかに基づいて作成する必要があります。
$this->auth->is_superuser() || RedirectToBadUser();
とにかく、メソッド内に aを追加することを妨げるものは何もなく、必要な粒度が得られます。