首页 > CMS > PhpCMS > 正文

【phpcms-v9】phpcms-v9应用程序创建类phpcms/libs/classes/application.cla

2024-09-10 07:15:54
字体:
来源:转载
供稿:网友

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

  1. <?php   
  2. /**  
  3.  *  application.class.php PHPCMS应用程序创建类  
  4.  *  
  5.  * @copyright           (C) 2005-2010 PHPCMS  
  6.  * @license             http://www.phpcms.cn/license/  
  7.  * @lastmodify          2010-6-7  
  8.  */   
  9. class application {   
  10.        
  11.     /**  
  12.      * 构造函数  
  13.      */   
  14.     public function __construct() {   
  15.         $param = pc_base::load_sys_class('param');//构造函数中主要用来对传递过来的数据进行过滤处理   
  16.         define('ROUTE_M'$param->route_m());//模块名   
  17.         define('ROUTE_C'$param->route_c());//控制器   
  18.         define('ROUTE_A'$param->route_a());//方法名   
  19.         $this->init();   
  20.     }   
  21.        
  22.     /**  
  23.      * 调用件事  
  24.      */   
  25.     private function init() {   
  26.         $controller = $this->load_controller();//加载控制器   
  27.         if (method_exists($controller, ROUTE_A)) {//判断控制器中是否存在某方法   
  28.             if (preg_match('/^[_]/i', ROUTE_A)) {//以_开头的方法都是protected类型的方法   
  29.                 exit('You are visiting the action is to protect the private action');   
  30.             } else {   
  31.                 call_user_func(array($controller, ROUTE_A));//执行控制器中的方法   
  32.             }   
  33.         } else {   
  34.             exit('Action does not exist.');//提示     方法不存在   
  35.         }   
  36.     }   
  37.        
  38.     /**  
  39.      * 加载控制器  
  40.      * @param string $filename  
  41.      * @param string $m  
  42.      * @return obj  
  43.      */   
  44.     private function load_controller($filename = ''$m = '') {   
  45.         if (emptyempty($filename)) $filename = ROUTE_C;//控制器名   
  46.         if (emptyempty($m)) $m = ROUTE_M;//模块名   
  47.         //控制器文件   
  48.         $filepath = PC_PATH.'modules'.DIRECTORY_SEPARATOR.$m.DIRECTORY_SEPARATOR.$filename.'.php';   
  49.         //如果控制器文件存在   
  50.         if (file_exists($filepath)) {   
  51.             $classname = $filename;//控制器类名   
  52.             include $filepath;//引入控制器文件   
  53.             if ($mypath = pc_base::my_path($filepath)) {//如果存在 MY_*控制器文件   
  54.                 $classname = 'MY_'.$filename;//主要用于二次开发的控制器文件   
  55.                 include $mypath;//引入MY_*.php控制器文件   
  56.             }   
  57.             if(class_exists($classname)){//如果控制器类名存在的话   
  58.                 return new $classname;//实例化控制器类对象   
  59.             }else{   
  60.                 exit('Controller does not exist.');//提示  控制器不存在   
  61.             }  //开源代码Vevb.com 
  62.         } else {   
  63.             exit('Controller does not exist.');//提示 控制器不存在   
  64.         }   
  65.     }   
  66. }   
  67. ?>

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表