【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.');//提示 控制器不存在 } } }
相关文章推荐
- 【phpcms-v9】phpcms-v9中url路由规则文件分析:phpcms/libs/classes/param.class.php
- 【phpcms-v9】phpcms/modules/admin/classes/admin.class.php文件分析
- 【phpcms-v9】phpcms-v9中系统管理员登陆页面控制器文件分析:phpcms/modules/admin/index.php
- 【phpcms-v9】phpcms-v9中model.class.php文件分析
- 【phpcms-v9】model.class.php文件分析-数据模型的基类
- 【phpcms-v9】phpcms-v9数据源调用的控制器文件分析phpcms/modules/dbsource/call.php
- 【phpcms-v9】model.class.php文件分析-数据模型的基类
- 【phpcms-v9】model.class.php文件分析-数据模型的基类
- 【phpcms-v9】content_output.class.php文件分析-前台内容详情页显示数据的过滤
- 【phpcms-v9】content_output.class.php文件分析-前台内容详情页显示数据的过滤
- 【phpcms-v9】content_output.class.php文件分析-前台内容详情页显示数据的过滤
- 【phpcms-v9】index.php文件分析-前台列表页代码分析
- 【phpcms-v9】content_form.calss.php文件分析-内容添加页面动态表单的生成原理
- 【phpcms-v9】content_form.calss.php文件分析-内容添加页面动态表单的生成原理
- 【phpcms-v9】content_form.calss.php文件分析-内容添加页面动态表单的生成原理
- 【phpcms-v9】content_form.calss.php文件分析-内容添加页面动态表单的生成原理
- 【phpcms-v9】后台content模块的content.php控制器文件分析-后台添加内容代码分析
- 【phpcms-v9】category.php文件分析-添加栏目
- 【phpcms-v9】cache_all.php文件分析-更新缓存
- 【phpcms-v9】专题模块后台控制器special.php文件分析-添加专题