82)PHP,基本框架类步骤

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 }
原文地址:https://www.cnblogs.com/xiaoyoucai/p/7396090.html