码迷,mamicode.com
首页 > Web开发 > 详细

82)PHP,基本框架类步骤

时间:2017-08-19 14:26:12      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:stat   efi   .com   root   参数   字符   factory   getcwd   define   

framework.class.php

       技术分享 

 

基本代码展示:

    

  1 <?php
  2 
  3 /**
  4  * 框架初始化功能类
  5  */
  6 class Framework {
  7     /**
  8      * 入口
      * 里面的static和self是一样的,都是表示当前类
9 */ 10 public static function run() { 11 //声明路径常量 12 static::_initPathConst(); 13 //确定分发参数 14 static::_initDispatchParam(); 15 // 当前平台相关的路径常量 16 static::_initPlatformPathConst(); 17 // 注册自动加载 18 static::_initAutoload(); 19 20 // 请求分发 21 static::_dispatch(); 22 } 23 24 /** 25 * 声明路径常量 26 */ 27 private static function _initPathConst() { 28 //目录基础常量的定义 29 define(ROOT_PATH, getCWD() . /);//getCWD()获得当前目录 30 define(APPLICTION_PATH, ROOT_PATH . application/); 31 define(FRAMEWORK_PATH, ROOT_PATH . framework/); 32 define(TOOL_PATH, FRAMEWORK_PATH . tool/); 33 } 34 /** 35 * 初始化分发参数 36 */ 37 private static function _initDispatchParam() { 38 // 确定分发参数 39 // 平台 40 $default_platform = back; 41 define(PLATFORM, isset($_GET[p]) ? $_GET[p] : $default_platform); 42 // 控制器类 43 $default_controller = Manage; 44 define(CONTROLLER, isset($_GET[c]) ? $_GET[c] : $default_controller); 45 // 动作 46 $default_action = index; 47 define(ACTION, isset($_GET[a]) ? $_GET[a] : $default_action); 48 } 49 /** 50 * 声明当前平台路径常量 51 */ 52 private static function _initPlatformPathConst() { 53 //当前平台相关的路径常量 54 define(CURRENT_CONTROLLER_PATH, APPLICTION_PATH . PLATFORM . /controller/); 55 define(CURRENT_MODEL_PATH, APPLICTION_PATH . PLATFORM . /model/); 56 define(CURRENT_VIEW_PATH, APPLICTION_PATH . PLATFORM . /view/); 57 } 58 /** 59 * 自动加载方法 60 */ 61 public static function userAutoload($class_name) { 62 //先处理确定的(框架中的核心类) 63 // 类名与类文件映射数组 64 $framework_class_list = array( 65 // ‘类名‘ => ‘类文件地址‘ 66 Controller => FRAMEWORK_PATH . Controller.class.php, 67 Model => FRAMEWORK_PATH . Model.class.php, 68 Factory => FRAMEWORK_PATH . Factory.class.php, 69 MySQLDB => FRAMEWORK_PATH . MySQLDB.class.php, 70 SessionDB => TOOL_PATH . SessionDB.class.php, 71 ) ; 72 //判断是否为核心类 73 if (isset($framework_class_list[$class_name])) { 74 //是核心类 75 require $framework_class_list[$class_name]; 76 } 77 //判断是否为可增加(控制器类,模型类) 78 //控制器类,截取后是个字符,匹配Controller 79 elseif (substr($class_name, -10) == Controller) { 80 // 控制器类, 当前平台下controller目录 81 require CURRENT_CONTROLLER_PATH . $class_name . .class.php; 82 } 83 //模型类,截取后5个字符,匹配Model 84 elseif (substr($class_name, -5) == Model) { 85 // 模型类,当前平台下model目录 86 require CURRENT_MODEL_PATH . $class_name . .class.php; 87 } 88 } 89 /** 90 * 注册自动加载 91 */ 92 private static function _initAutoload() { 93 spl_autoload_register(array(__CLASS__, userAutoload)); 94 } 95 /** 96 * 分发请求 97 */ 98 private static function _dispatch() { 99 //实例化控制器类,并调用动作方法 100 $controller_name = CONTROLLER . Controller; 101 //实例化 102 $controller = new $controller_name();//可变类 103 //调用方法(action动作) 104 //拼凑当前的方法动作名字符串 105 $action_name = ACTION . Action; 106 $controller->$action_name();//可变方法 107 } 108 }

 

82)PHP,基本框架类步骤

标签:stat   efi   .com   root   参数   字符   factory   getcwd   define   

原文地址:http://www.cnblogs.com/xiaoyoucai/p/7396090.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!