MVC 標準では、関数グループごとにコントローラーを分割するのが最善です。
認証コントローラー
認証/登録/削除を処理します。他のすべてのコントローラーが最初にチェックするログインのセッション変数を設定します。
function register(){
}
function logout(){
}
function edit(){
}
function login(){
}
管理者コントローラー
すべての管理タスクを処理します
ユーザーコントローラー
すべてのユーザー タスクを処理します。プロフィールを編集したり、個人のブログに投稿したりしますか?
フロントコントローラー
公開されているすべてのタスクを処理し、非認証ベースのページなどを表示します。
無関係な CodeIgniter の例
私は自分の CI プロジェクトでこの方法論を使用しています。この情報は Yii フレームワークとは異なりますが、適切な MVC セットアップを垣間見ることができます。
次のようなコアコントローラーがあります。
application/core/FRONT_Controller.php
このコントローラーは CI_Controller を拡張し、パブに面したページのすべての設定を処理します。私の一般向けコントローラーはすべて、CI_Controller の代わりに FRONT_Controller を拡張します。
application/core/USER_Controller.php
このコントローラーは、すべてのユーザー認証を処理します。
application/core/ADMIN_Controller.php
このコントローラーは予備チェックを行います。ここでも、すべての管理者ベースのコントローラーがこのコントローラーを拡張するため、認証はすぐに開始されます... IE:
if (!$this->tank_auth->is_logged_in()){
redirect(site_url('/user/login/'));
}else{
$this->data['user'] = array(
'user_id' => $this->tank_auth->get_user_id(),
'username' => $this->tank_auth->get_username(),
'emailAddress' => $this->tank_auth->get_email(),
'firstname' => $this->tank_auth->get_firstname(),
'lastname' => $this->tank_auth->get_lastname(),
'userlevel' => $this->tank_auth->get_userlevel(),
'avatar' => $this->tank_auth->get_avatar(),
'last_login' => $this->tank_auth->get_last_login()
);
}
application/controllers/blog.php:
class Categories extends ADMIN_Controller{
function __construct(){
parent::__construct();
} #end constructor function