82)PHP,基本架構類步驟

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.