国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP從零開始打造自己的MVC框架之類的自動加載實現(xiàn)方法詳解

2024-05-05 00:09:25
字體:
供稿:網(wǎng)友

本文實例講述了PHP從零開始打造自己的MVC框架之類的自動加載實現(xiàn)方法。分享給大家供大家參考,具體如下:

前面介紹了MVC框架的入口文件,接下來我們希望完成一個“自動加載類”的功能,我們把這個功能放到Imooc這個基礎類當中。

core/imooc.php:

<?phpnamespace core;class Imooc{  public static $classMap = array();  static public function run()  {    p('ok');    $route = new /core/route();  }  /*  自動加載的功能  */  static public function load($class)  {    // 自動加載類庫    // new /core/Route()    // $class = '/core/Route'    // IMOOC.'/core/route.php'    if(isset($classMap[$class])){      return true;    }else{      $class = str_replace('//', '/', $class);      $file = IMOOC.'/'.$class.'.php';      if (is_file($file)) {        include $file;        self::$classMap[$class] = $class;      }else{        return false;      }    }  }}

上面代碼中,load()方法的主要功能就是自動加載類庫。

自動加載的工作原理:

當我們new一個類的時候,如果它不存在,就會觸發(fā)spl_autoload_register注冊的方法,然后通過這個方法去引入要實例化的類

spl_autoload_register('/core/Imooc::load');

我們在入口文件index.php中注冊:

<?php/*入口文件1.定義常量2.加載函數(shù)庫3.啟動框架*/// 定義當前框架所在的根目錄define('IMOOC', __DIR__);// 定義框架核心文件所在的目錄define('CORE', IMOOC.'/core');// 項目文件所在目錄define('APP', IMOOC.'/app');// 定義項目調(diào)試模式define('DEBUG', true);// 判斷項目是否處于調(diào)試狀態(tài)if (DEBUG) {  // 設置報錯級別:顯示所有錯誤  ini_set('display_error', 'On');}else{  ini_set('display_error','Off');}// 加載函數(shù)庫include CORE.'/common/function.php';// 加載框架核心文件include CORE.'/imooc.php';// 注冊自動加載// (當我們new一個不存在的類的時候會觸發(fā)/core/Imooc::load)spl_autoload_register('/core/Imooc::load');/core/Imooc::run();

所以,我們在run方法實例化route類的時候并沒有手動引入該類文件

static public function run(){    p('ok');    $route = new /core/route();}

上面代碼,new /core/route()會觸發(fā)load()方法,然后去引入需要的文件。

route.php代碼如下:

<?phpnamespace core;class Route{  public function __construct(){    p('route ok');  }}

現(xiàn)在我們訪問入口文件index.php,會調(diào)用Imooc::run方法,預期瀏覽器會輸出:

ok
route ok

PHP,MVC框架,自動加載

至此,項目結(jié)構(gòu)如圖:

PHP,MVC框架,自動加載

 

希望本文所述對大家PHP程序設計有所幫助。


注:相關教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 榆中县| 元谋县| 阿拉善右旗| 泰来县| 九龙县| 五指山市| 阿图什市| 苗栗县| 壤塘县| 北票市| 潞西市| 绍兴县| 万源市| 托里县| 平谷区| 图片| 襄汾县| 武义县| 青海省| 陈巴尔虎旗| 青浦区| 天祝| 昭通市| 德安县| 元阳县| 翼城县| 沂源县| 普兰县| 武安市| 图片| 临夏市| 寻乌县| 高青县| 上饶市| 襄城县| 白沙| 塔河县| 宜宾市| 广南县| 临潭县| 曲麻莱县|