您的位置:首页 > 移动开发

【phpcms-v9】phpcms-v9应用程序创建类phpcms/libs/classes/application.class.php文件分析

2012-11-29 18:07 841 查看
<?php
/**
*  application.class.php PHPCMS应用程序创建类
*
* @copyright			(C) 2005-2010 PHPCMS
* @license			 http://www.phpcms.cn/license/ * @lastmodify			2010-6-7
*/
class application {

/**
* 构造函数
*/
public function __construct() {
$param = pc_base::load_sys_class('param');//构造函数中主要用来对传递过来的数据进行过滤处理
define('ROUTE_M', $param->route_m());//模块名
define('ROUTE_C', $param->route_c());//控制器
define('ROUTE_A', $param->route_a());//方法名
$this->init();
}

/**
* 调用件事
*/
private function init() {
$controller = $this->load_controller();//加载控制器
if (method_exists($controller, ROUTE_A)) {//判断控制器中是否存在某方法
if (preg_match('/^[_]/i', ROUTE_A)) {//以_开头的方法都是protected类型的方法
exit('You are visiting the action is to protect the private action');
} else {
call_user_func(array($controller, ROUTE_A));//执行控制器中的方法
}
} else {
exit('Action does not exist.');//提示     方法不存在
}
}

/**
* 加载控制器
* @param string $filename
* @param string $m
* @return obj
*/
private function load_controller($filename = '', $m = '') {
if (empty($filename)) $filename = ROUTE_C;//控制器名
if (empty($m)) $m = ROUTE_M;//模块名
//控制器文件
$filepath = PC_PATH.'modules'.DIRECTORY_SEPARATOR.$m.DIRECTORY_SEPARATOR.$filename.'.php';
//如果控制器文件存在
if (file_exists($filepath)) {
$classname = $filename;//控制器类名
include $filepath;//引入控制器文件
if ($mypath = pc_base::my_path($filepath)) {//如果存在 MY_*控制器文件
$classname = 'MY_'.$filename;//主要用于二次开发的控制器文件
include $mypath;//引入MY_*.php控制器文件
}
if(class_exists($classname)){//如果控制器类名存在的话
return new $classname;//实例化控制器类对象
}else{
exit('Controller does not exist.');//提示  控制器不存在
}
} else {
exit('Controller does not exist.');//提示 控制器不存在
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐