CI 前台、后台Controller的设计

网站设计一般会分前台及后台,前、后台功能及权限管理都不同,习惯上会写成两部分独立的程式(extend基本的函式库),依照这样的概念,在用CodeIgniter开发前、后台功能,通常会设定一个基本的MY_Controller,然后再分别以前台Public_Controller、后台Admin_Controller extends MY_Controller。

如果是一个controller class写在一个php档案里,例如Public_Controller.php:

<?php
class   Public_Controller extends   MY_Controller   {
    function __construct ( )   {
        parent :: __construct ( ) ;
        }
    }
?>

Admin_Controller.php:

<?php
class   Admin_Controller extends   MY_Controller   {
    function __construct ( )   {
        parent :: __construct ( ) ;
        }
    }
?>
这时候要注意在MY_Controller.php里把Public_Controller.php、Admin_Controller.php include进来,如果没有就会出现
Fatal error: Class 'Public_Controller' not found in xxx…的错误讯息。

<?php
class   MY_Controller   extends   Controller   {
    function __construct ( )   {
        parent :: __construct ( ) ;
        }
    }
//把MY_Controller.php、Public_Controller.php、Admin_Controller.php都放在applicaton/libraries目录下。
include ( 'Public_Controller.php' ) ;
include ( 'Admin_Controller.php' ) ;
?>

另一个方法,是把这些controller class都写在MY_Controller.php

<?php
class   MY_Controller extends Controller   {
    function __construct ( )   {
        parent :: __construct ( ) ;
        }
    }
class   Public_Controller extends   MY_Controller   {
    function __construct ( )   {
        parent :: __construct ( ) ;
        }
    }
class   Admin_Controller extends   MY_Controller   {
    function __construct ( )   {
        parent :: __construct ( ) ;
        }
    }
?>