教你利用composer實現(xiàn)路由加載

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

成都創(chuàng)新互聯(lián)專注于瑞金網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供瑞金營銷型網(wǎng)站建設(shè),瑞金網(wǎng)站制作、瑞金網(wǎng)頁設(shè)計、瑞金網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)服務(wù),打造瑞金網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供瑞金網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

本教程示例代碼見 https://github.com/johnlui/My-First-Framework-based-on-Composer

久負盛名的 CodeIgniter 框架是很多人的 PHP 開發(fā)入門框架,同樣也是我開始學習如何從頭構(gòu)建一個網(wǎng)站的框架。在 CI 中我學到了很多,其中對 MVC 的深入理解和對框架本質(zhì)的理解對我的影響。從使用框架是為了提高開發(fā)效率的角度來看,框架的本質(zhì)就是路由。

推薦 https://github.com/NoahBuscher/Macaw,對應(yīng)的 Composer 包為 noahbuscher/macaw 。

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

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

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

至此,Macaw 包安裝成功!

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

1:新建 App/config 文件夾,在里面新建 routs.php 文件,內(nèi)容如下:

2:在入口文件index.php中 加載routs.php 文件

Macaw 的文檔位于 https://github.com/NoahBuscher/Macaw,請按照你的 HTTP 服務(wù)軟件類型自行設(shè)置偽靜態(tài),其實跟絕大多數(shù)框架一樣:“將所有非靜態(tài)文件全部指向 index.php”。

配置成功后訪問域名:

如果頁面亂碼,請調(diào)整編碼為 UTF-8。如果你成功看到以上頁面,那么恭喜你,路由配置成功!

Macaw 只有一個文件,去除空行總共也就一百行多一點,通過代碼我們能直接看明白它是怎么工作的。下面我簡略分析一下:

Composer 的自動加載在每次 URL 驅(qū)動 MFFC/public/index.php 之后會在內(nèi)存中維護一個全量命名空間類名到文件名的數(shù)組,這樣當我們在代碼中使用某個類的時候,將自動載入該類所在的文件。

我們在路由文件中載入了 Macaw 類:“use NoahBuscher\\Macaw\\Macaw;”,接著調(diào)用了兩次靜態(tài)方法 ::get(),這個方法是不存在的,將由 MFFC/vendor/codingbean/macaw/Macaw.php 中的 __callstatic() 接管。

這個函數(shù)接受兩個參數(shù),methodparams,前者是具體的 function 名稱,在這里就是 get,后者是這次調(diào)用傳遞的參數(shù),即 Macaw::get(‘fuck’,function(){…}) 中的兩個參數(shù)。第一個參數(shù)是我們想要監(jiān)聽的 URL 值,第二個參數(shù)是一個 PHP 閉包,作為回調(diào),代表 URL 匹配成功后我們想要做的事情。

__callstatic() 做的事情也很簡單,分別將目標URL(即 /fuck)、HTTP方法(即 GET)和回調(diào)代碼壓入routes、methods 和 $callbacks 三個 Macaw 類的靜態(tài)成員變量(數(shù)組)中。

路由文件最后一行的 Macaw::dispatch(); 方法才是真正處理當前 URL 的地方。能直接匹配到的會直接調(diào)用回調(diào),不能直接匹配到的將利用正則進行匹配。

新聞名稱:教你利用composer實現(xiàn)路由加載
轉(zhuǎn)載來于:http://muchs.cn/article18/cjhsdp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、定制網(wǎng)站、網(wǎng)站改版商城網(wǎng)站、微信公眾號、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)