MY_controller.php中可以加载两个类的疑问?
在stblog中,看到MY_controller.php中加载了两个类。而且类名不是MY_Controller,我就纳闷。我在手册看到的都是类名和文件名一样,且文件名第一字母大写。可为什么他的MY_controller.php中却写了了名字不是MY_controller的类呢。求朋友指点。附。
1、http://codeigniter.org.cn/forums/forum.php?mod=viewthread&tid=10990
2、stblog中的MY_controller.php原文
<?php if (!defined('BASEPATH')) exit('No direct access allowed.');
/**
* STBlog Blogging System
*
* 基于Codeigniter的单用户多权限开源博客系统
*
* STBlog is an open source multi-privilege blogging System built on the
* well-known PHP framework Codeigniter.
*
* @packageSTBLOG
* @authorSaturn <huyanggang@gmail.com>
* @copyright Copyright (c) 2009 - 2010, cnsaturn.com.
* @licenseGNU General Public License 2.0
* @linkhttp://code.google.com/p/stblog/
* @version0.1.0
*/
// ------------------------------------------------------------------------
/**
* STBLOG 前台父控制器
*
* 前台的所有控制器都需要继承这个类,它不包含验证
*
* @packageSTBLOG
* @subpackage Libraries
* @category Libraries
* @authorSaturn <huyanggang@gmail.com>
* @link http://code.google.com/p/stblog/
*/
class ST_Controller extends CI_Controller {
function __construct() {
parent::__construct();
/** 检查服务器上的PHP版本 */
$this->utility->check_compatibility();
/** 检查站点当前状态 */
$this->utility->check_blog_status();
/** 设置当前使用的主题皮肤 */
$this->load->theme = setting_item('current_theme');
/** 前台页面均使用主题皮肤功能 */
$this->load->switch_theme_on();
}
/**
* 加载某个主题页面下的VIEW
*
* 第1/2/4个参数分别对应CI原有的load view中的第1/2/3参数,这里的第三个参数用于一些特殊场合:
* 当整站缓存功能被开启时,为了避免当前被操作的页面缓存,可以设置第三个参数为FALSE避免。
*
*
* @access public
* @param string
* @param array
* @parambool
* @param bool
* @return void
*/
function load_theme_view($view, $vars = array(), $cached = TRUE, $return = FALSE)
{
/** 加载对应主题下的view */
if(file_exists(FCPATH. ST_THEMES_DIR. DIRECTORY_SEPARATOR . setting_item('current_theme'). DIRECTORY_SEPARATOR . $view .'.php'))
{
echo $this->load->view($view, $vars,$return);
}
else
{
show_404();
}
/** 是否开启缓存? */
if(1 == intval(setting_item('cache_enabled')) && $cached)
{
$cache_expired = setting_item('cache_expire_time');
$cache_expired = ($cache_expired && is_numeric($cache_expired)) ? intval($cache_expired) : 60;
/** 开启缓存 */
$this->output->cache($cache_expired);
}
}
}
// ------------------------------------------------------------------------
/**
* STBLOG 后台父控制器
*
* 后台的所有控制器都需要继承这个类,主要包含验证
*
* @packageSTBLOG
* @subpackage Controller
* @category Controller
* @authorSaturn <huyanggang@gmail.com>
* @link http://code.google.com/p/stblog/
*/
class ST_Auth_Controller extends CI_Controller {
function __construct() {
parent::__construct();
/** 加载验证库 */
$this->load->library('auth');
/** 检查登陆 */
if(!$this->auth->hasLogin())
{
redirect('admin/login?ref='.urlencode($this->uri->uri_string()));
}
/** 加载后台控制器公共库 */
$this->load->library('form_validation');
$this->load->library('user');
/** 加载后台控制器公共模型 */
$this->load->model('users_mdl');
/** 加载后台控制器helper */
/** 后台管理页面,不使用皮肤 */
$this->load->switch_theme_off();
}
}
/* End of file MY_Controller.php */
/* Location: ./application/libraries/MY_Controller.php */
你看到文件名和类名一致,那是因为这些类需要CI做route时必须遵循的规则。这2个类不是给CI做route用的,自然不用遵循该规则。 require后,可以new文件中的多个类. 听了Rui 的讲解,似乎明白了些。感谢了
页:
[1]