標籤: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,基本架構類步驟