首頁  >  文章  >  開發工具  >  教你利用composer實現路由加載

教你利用composer實現路由加載

藏色散人
藏色散人轉載
2020-07-10 14:10:063843瀏覽

下面由composer教程欄位給大家介紹利用composer實現路由加載,希望對需要的朋友有所幫助!

教你利用composer實現路由加載

#本教學範例程式碼見https:/ /github.com/johnlui/My-First-Framework-based-on-Composer

久負盛名的CodeIgniter 框架是許多人的PHP 開發入門框架,同樣也是我開始學習如何從頭開始建立網站的框架。在 CI 中我學到了很多,其中對 MVC 的深入理解和對框架本質的理解對我的影響最大。從使用框架是為了提高開發效率的角度來看,框架的本質就是路由。

推薦 https://github.com/NoahBuscher/Macaw,對應的 Composer 套件為 noahbuscher/macaw 。

下面開始安裝它,更改composer.json:

 "require": {
    "noahbuscher/macaw": "dev-master"
  },

運行composer install,成功之後得到以下目錄

教你利用composer實現路由加載

至此,Macaw 套件安裝成功!

下面,就是見證奇蹟的時刻!我們將賦予 MFFC 生命力,讓它真正地跑起來!

1:新App/config 資料夾,在裡面新建routs.php 文件,內容如下:
教你利用composer實現路由加載

2:在入口文件index.php中載入routs. php 檔案
教你利用composer實現路由加載

Macaw 的文件位於https://github.com/NoahBuscher/Macaw,請依照你的HTTP 服務軟體類​​型自行設定偽靜態,其實跟絕大多數框架一樣:「將所有非靜態文件全部指向index.php」。

設定成功後造訪網域:
教你利用composer實現路由加載

如果頁面亂碼,請調整編碼為 UTF-8。如果你成功看到以上頁面,那麼恭喜你,路由設定成功!

Macaw 只有一個文件,去除空行總共也就一百行多一點,透過程式碼我們能直接看明白它是怎麼運作的。下面我簡單分析一下:

  1. Composer 的自動載入在每次URL 驅動MFFC/public/index.php 之後會在記憶體中維護一個全量命名空間類別名稱到檔案名稱的數組,這樣當我們在程式碼中使用某個類別的時候,就會自動載入該類別所在的檔案。
  2. 我們在路由檔案中載入了Macaw 類別:“use NoahBuscher\Macaw\Macaw;”,接著呼叫了兩次靜態方法::get(),這個方法是不存在的,將由MFFC/vendor/codingbean/macaw/Macaw.php 中的__callstatic() 接手。

  3. 這個函數接受兩個參數,method" role="presentation" style="position: relative;"> metho##d

    ###params,前者是具體的function 名稱,這裡就是get,後者是這次呼叫傳遞的參數,即Macaw::get('fuck',function(){ …}) 中的兩個參數。第一個參數是我們想要監聽的 URL 值,第二個參數是一個 PHP 閉包,作為回調,代表 URL 匹配成功後我們想要做的事情。 ###
  4. __callstatic() 做的事情也很简单,分别将目标URL(即 /fuck)、HTTP方法(即 GET)和回调代码压入 routes" role="presentation" style="position: relative;">routesmethods 和 $callbacks 三个 Macaw 类的静态成员变量(数组)中。

  5. 路由文件最后一行的 Macaw::dispatch(); 方法才是真正处理当前 URL 的地方。能直接匹配到的会直接调用回调,不能直接匹配到的将利用正则进行匹配。

以上是教你利用composer實現路由加載的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除