亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

用 Composer構(gòu)建自己的 PHP 框架之構(gòu)建路由

 更新時間:2014年10月30日 10:34:20   投稿:hebedich  
本文是構(gòu)建自己的php框架的第二篇,主要為大家來講述如何構(gòu)建路由,非常的詳細,也很易懂,有需要的朋友可以參考下

上一篇中我們已經(jīng)建立了一個空的 Composer 項目,本篇將講述如何構(gòu)建路由。

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

下面我們就開始自己來構(gòu)建路由,先去 GitHub 搜一下:點此查看搜索結(jié)果

推薦https://github.com/NoahBuscher/Macaw,對應的 Composer 包為codingbean/macaw ,作者應該是在 GitHub 上改名了,這可能會造成一定的困擾。下面開始安裝 Macaw 包,更改 composer.json:

{ "require": {  "codingbean/macaw": "dev-master" }}

運行 composer update,成功之后將得到以下目錄:


至此,Macaw 包安裝成功!

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

新建 MFFC/public 文件夾,這個文件夾將是用戶唯一可見的部分。在文件夾下新建 index.php 文件:

<?php// Autoload 自動載入require '../vendor/autoload.php';// 路由配置require '../config/routes.php';

上面一行表示引入 Composer 的自動載入功能,下面一行表示載入路由配置文件。新建 MFFC/config 文件夾,在里面新建 routs.php 文件,內(nèi)容如下:

<?phpuse NoahBuscher\Macaw\Macaw;Macaw::get('fuck', function() { echo "成功!";});Macaw::get('(:all)', function($fu) { echo '未匹配到路由<br>'.$fu;});Macaw::dispatch();

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

然后,將某一個端口用 Apache 或 Nginx 分配給 MFFC/public 目錄,這一步十分建議用 Apache 或者 Nginx 做。

如果使用 PHP 內(nèi)置 HTTP 服務器:

cd public && php -S 127.0.0.1:3000

將導致路由的Macaw::get('fuck' 必須寫成Macaw::get('/fuck' 才能響應。

目前的代碼使用 Apache + mod_php 和 Nginx + php-fpm 方式均沒有問題。

我在本地綁定了 81 端口,訪問http://127.0.0.1:81/fuck 可以看到:


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

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

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

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

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

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

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

相關文章

  • php將ppt轉(zhuǎn)jpg圖片的具體步驟代碼

    php將ppt轉(zhuǎn)jpg圖片的具體步驟代碼

    在本篇文章里小編給大家整理的是一篇關于php將ppt轉(zhuǎn)jpg圖片的具體步驟代碼,有興趣的朋友們可以跟著學習下。
    2021-07-07
  • 最新版本PHP 7 vs HHVM 多角度比較

    最新版本PHP 7 vs HHVM 多角度比較

    PHP 7 是 PHP 社區(qū)對 HHVM 的回應。PHP 7 發(fā)布的預覽版本號稱比之前的 PHP 5 的性能要提升100%。不過,PHP 還有一個競爭對手 HHVM (HipHop Virtual Machine) 一個運行 PHP 代碼的虛擬工具。二者直接的比較正在升溫,那么讓我們來看一下他們直接的性能對比吧
    2016-02-02
  • laravel 事件/監(jiān)聽器實例代碼

    laravel 事件/監(jiān)聽器實例代碼

    這篇文章主要介紹了laravel 事件/監(jiān)聽器實例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Yii2.0實現(xiàn)的批量更新及批量插入功能示例

    Yii2.0實現(xiàn)的批量更新及批量插入功能示例

    這篇文章主要介紹了Yii2.0實現(xiàn)的批量更新及批量插入功能,結(jié)合實例形式總結(jié)分析了Yii2.0數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)的批量更新與批量插入功能相關操作技巧,需要的朋友可以參考下
    2019-01-01
  • YII框架http緩存操作示例

    YII框架http緩存操作示例

    這篇文章主要介紹了YII框架http緩存操作,結(jié)合實例形式分析了Yii框架針對http緩存的禁用、啟用、讀寫、顯示等相關操作技巧,需要的朋友可以參考下
    2019-04-04
  • Yii框架getter與setter方法功能與用法分析

    Yii框架getter與setter方法功能與用法分析

    這篇文章主要介紹了Yii框架getter與setter方法,結(jié)合實例形式分析了Yii框架中getter與setter方法的基本功能、原理、使用方法及相關操作注意事項,需要的朋友可以參考下
    2019-10-10
  • Laravel框架數(shù)據(jù)庫CURD操作、連貫操作總結(jié)

    Laravel框架數(shù)據(jù)庫CURD操作、連貫操作總結(jié)

    這篇文章主要介紹了Laravel框架數(shù)據(jù)庫CURD操作、連貫操作、鏈式操作總結(jié),本文包含大量數(shù)據(jù)庫操作常用方法,需要的朋友可以參考下
    2014-09-09
  • PHP后臺實現(xiàn)微信小程序登錄

    PHP后臺實現(xiàn)微信小程序登錄

    這篇文章主要為大家詳細介紹了PHP后臺實現(xiàn)微信小程序登錄,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • uni-app結(jié)合PHP實現(xiàn)單用戶登陸demo及解析

    uni-app結(jié)合PHP實現(xiàn)單用戶登陸demo及解析

    這篇文章主要為大家介紹了uni-app結(jié)合PHP實現(xiàn)單用戶登陸示例過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • php用正則表達式匹配中文實例詳解

    php用正則表達式匹配中文實例詳解

    php中怎么用正則表達式匹配中文,需要注意什么,本文就詳解一下這個,還有實例
    2013-11-11

最新評論