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

教你利用composer實現路由加載

Jul 10, 2020 pm 02:10 PM
composer 路由

下面由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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Composer 的進階功能:別名、腳本與衝突解決 Composer 的進階功能:別名、腳本與衝突解決 Jun 03, 2024 pm 12:37 PM

Composer提供進階功能,包括:1.別名:定義套件便捷名稱以便重複引用;2.腳本:安裝/更新套件時執行自訂指令,用於建立資料庫表或編譯資源;3.衝突解決:使用優先權規則、滿足性限制和套件別名解決多個套件對同個依賴版本的不同需求,以避免安裝衝突。

PHP 微服務容器化的敏捷開發與維 PHP 微服務容器化的敏捷開發與維 May 08, 2024 pm 02:21 PM

答案:PHP微服務採用HelmCharts部署進行敏捷開發,並使用DockerContainer容器化以實現隔離和可擴展性。詳細描述:使用HelmCharts自動​​部署PHP微服務,實現敏捷開發。 Docker映像允許對微服務進行快速迭代和版本控制。 DockerContainer標準隔離微服務,而Kubernetes負責管理容器的可用性和可擴充性。利用Prometheus和Grafana監控微服務效能和健康狀況,並創建警告和自動修復機制。

PHP CI/CD 在 DevOps 專案中的作用 PHP CI/CD 在 DevOps 專案中的作用 May 08, 2024 pm 09:09 PM

PHPCI/CD是DevOps專案中的關鍵實踐,它可實現自動化建置、測試和部署流程,從而提高開發效率和軟體品質。典型的PHPCI/CD管道包含以下階段:1)持續整合:每當程式碼發生變更時,都會自動建置和測試程式碼。 2)持續部署:透過自動部署經過測試和整合的程式碼到生產環境,從而加快交付速度。透過實施PHPCI/CD管道,可以提高開發效率,改善軟體質量,縮短上市時間並提高可靠性。

PHP 程式碼版本控制與協作 PHP 程式碼版本控制與協作 May 07, 2024 am 08:54 AM

PHP程式碼版本控制:PHP開發中常用的版本控制系統(VCS)有兩個:Git:分散式VCS,開發人員本地儲存程式碼庫副本,方便協作和離線工作。 Subversion:集中式VCS,程式碼庫唯一副本儲存在中央伺服器上,提供更多控制。 VCS幫助團隊追蹤變更、協作並回滾到早期版本。

PHP 資料結構的視覺化技術 PHP 資料結構的視覺化技術 May 07, 2024 pm 06:06 PM

PHP資料結構視覺化有三種主要技術:Graphviz:開源工具,可建立圖表、有向無環圖和決策樹等圖形表示。 D3.js:JavaScript函式庫,用於建立互動式、資料驅動的視覺化,從PHP產生HTML和數據,再用D3.js在客戶端視覺化。 ASCIIFlow:用於建立文字表示資料流程圖的函式庫,適合流程和演算法的視覺化。

如何使用 PHP CI/CD 實現快速迭代? 如何使用 PHP CI/CD 實現快速迭代? May 08, 2024 pm 10:15 PM

答:利用PHPCI/CD實現快速迭代,包括設定CI/CD管道、自動化測試和部署流程。設定CI/CD管道:選擇CI/CD工具,配置程式碼儲存庫,定義建置管道。自動化測試:編寫單元和整合測試,使用測試框架簡化測試。實戰案例:使用TravisCI:安裝TravisCI,定義管道,啟用管道,查看結果。實現持續交付:選擇部署工具,定義部署管道,自動化部署。效益:提高開發效率、減少錯誤、縮短交貨時間。

PHP數組分頁中如何使用Redis快取? PHP數組分頁中如何使用Redis快取? May 01, 2024 am 10:48 AM

使用Redis快取可以大幅優化PHP數組分頁的效能。可透過以下步驟實現:安裝Redis客戶端。連接到Redis伺服器。建立快取數據,將每頁資料儲存到Redis雜湊中,金鑰為"page:{page_number}"。從快取中獲取數據,避免對大型數組進行昂貴的操作。

Composer 如何處理 composer.lock 檔案? Composer 如何處理 composer.lock 檔案? Jun 03, 2024 pm 04:40 PM

Composer透過使用composer.lock檔案來管理依賴項,該檔案記錄了所有已安裝依賴項及其確切版本,使其:確保一致性,避免版本衝突。提高效能,無需重複搜尋軟體包。追蹤更改,記錄每次安裝命令後已安裝的依賴項版本。

See all articles