最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年06月03日 09:19:47   作者:學習筆記666  
這篇文章主要介紹了PHP從零開始打造自己的MVC框架之類的自動加載實現(xiàn)方法,結合具體實例形式詳細分析了MVC框架類的自動加載原理、定義、實現(xiàn)方法及相關操作技巧,需要的朋友可以參考下

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

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

core\imooc.php:

<?php
namespace 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代碼如下:

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

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

ok
route ok

至此,項目結構如圖:

更多關于PHP相關內(nèi)容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

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

相關文章

  • PHP行為設計模式之策略模式

    PHP行為設計模式之策略模式

    這篇文章主要介紹了PHP行為設計模式之策略模式,策略模式(Strategy pattern)是行為類模式中的一個類型。行為類模式用來說明一個應用是如何運作的
    2023-04-04
  • 解決163/sohu/sina不能夠收到PHP MAIL函數(shù)發(fā)出郵件的問題

    解決163/sohu/sina不能夠收到PHP MAIL函數(shù)發(fā)出郵件的問題

    最近準備改改自己的個人主頁,加上發(fā)郵件到功能,發(fā)現(xiàn)居然不是那么好用。gmail和msn可以收到郵件,但是163/sina/sohu的郵箱居然都收不到,非常郁悶。其實代碼也很簡單。 php manual 已經(jīng)說得相當清楚了。
    2009-03-03
  • 用php+javascript實現(xiàn)二級級聯(lián)菜單的制作

    用php+javascript實現(xiàn)二級級聯(lián)菜單的制作

    二級級聯(lián)菜單在我去年的時候就用asp+js做過,而現(xiàn)在忽然拿出來再做的時候我發(fā)現(xiàn)我忘記了,而且原來用asp寫的程序都找不到了,真暈[emot]sweat[/emot],于是到網(wǎng)上搜,找了半天,我發(fā)現(xiàn)網(wǎng)上的寫法各異,而且都特別復雜,這么一個二級級聯(lián)菜單,有必要弄這么復雜嗎?于是自己想重新寫一個簡單的。在經(jīng)過半個小時左右的思考后,我完成了二級級聯(lián)菜單的設計和制作。
    2008-05-05
  • php下封裝較好的數(shù)字分頁方法

    php下封裝較好的數(shù)字分頁方法

    php下數(shù)字分頁函數(shù)代碼,需要的朋友可以參考下。
    2010-11-11
  • php實現(xiàn)接口api數(shù)據(jù)簽名及驗簽

    php實現(xiàn)接口api數(shù)據(jù)簽名及驗簽

    api數(shù)據(jù)簽名作用就是通過使用簽名可以驗證數(shù)據(jù)在傳輸過程中是否被篡改或修改,下面小編就來為大家介紹一下php如何實現(xiàn)接口api數(shù)據(jù)簽名及驗簽吧
    2023-11-11
  • XHProf報告字段含義的解析

    XHProf報告字段含義的解析

    下面小編就為大家?guī)硪黄猉HProf報告字段含義的解析。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • PHP浮點數(shù)精度問題匯總

    PHP浮點數(shù)精度問題匯總

    這篇文章主要介紹了PHP浮點數(shù)精度問題匯總,本文著重探討PHP浮點數(shù)精度損失問題,用三個段落不同的方式講解了這個問題的形成原因以及解決方法,需要的朋友可以參考下
    2015-05-05
  • PHP設計模式之迭代器模式淺析

    PHP設計模式之迭代器模式淺析

    迭代器(Iterator)模式,它在一個很常見的過程上提供了一個抽象:位于對象圖不明部分的一組對象(或標量)集合上的迭代。迭代有幾種不同的具體執(zhí)行方法:在數(shù)組屬性,集合對象,數(shù)組,甚至一個查詢結果集之上迭代
    2023-04-04
  • PHP查詢并刪除數(shù)據(jù)庫多列重復數(shù)據(jù)的方法(利用數(shù)組函數(shù)實現(xiàn))

    PHP查詢并刪除數(shù)據(jù)庫多列重復數(shù)據(jù)的方法(利用數(shù)組函數(shù)實現(xiàn))

    這篇文章主要介紹了PHP查詢并刪除數(shù)據(jù)庫多列重復數(shù)據(jù)的方法,利用數(shù)組函數(shù)實現(xiàn)該功能,涉及PHP數(shù)據(jù)庫操作的相關技巧,需要的朋友可以參考下
    2016-02-02
  • PHP遞歸調(diào)用的小技巧講解

    PHP遞歸調(diào)用的小技巧講解

    對于初學PHP語言的朋友來說,可能對PHP遞歸的用法還是比較陌生。我們今天就來講一下有關PHP遞歸調(diào)用實現(xiàn)多元數(shù)組替換功能
    2013-02-02

最新評論

北碚区| 防城港市| 酒泉市| 集贤县| 墨江| 龙川县| 班玛县| 辽中县| 云和县| 突泉县| 平山县| 乌鲁木齐市| 手游| 开鲁县| 永安市| 高邮市| 寿光市| 安顺市| 大竹县| 华阴市| 巨鹿县| 正宁县| 石泉县| 古浪县| 武穴市| 青岛市| 肥西县| 高碑店市| 大余县| 宁安市| 岳池县| 虹口区| 军事| 麻栗坡县| 略阳县| 衡南县| 云龙县| 赣榆县| 九龙坡区| 巴林右旗| 绵阳市|