【phpcms-v9】phpcms-v9應用程序創建類phpcms/libs/classes/application.class.php文件分析.
- <?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 (emptyempty($filename)) $filename = ROUTE_C;//控制器名
- if (emptyempty($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.');//提示 控制器不存在
- } //開源代碼Vevb.com
- } else {
- exit('Controller does not exist.');//提示 控制器不存在
- }
- }
- }
- ?>
新聞熱點
疑難解答