国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - 用 Composer構建自己的 PHP 框架之構建路由

用 Composer構建自己的 PHP 框架之構建路由

2020-08-03 16:59PHP之家 PHP教程

本文是構建自己的php框架的第二篇,主要為大家來講述如何構建路由,非常的詳細,也很易懂,有需要的朋友可以參考下

上一篇中我們已經建立了一個空的 Composer 項目,本篇將講述如何構建路由

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

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

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

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

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

用 Composer構建自己的 PHP 框架之構建路由

至此,Macaw 包安裝成功!

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

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

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

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

<?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 服務軟件類型自行設置偽靜態,其實跟絕大多數框架一樣:“將所有非靜態文件全部指向 index.php”。

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

如果使用 PHP 內置 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 可以看到:

用 Composer構建自己的 PHP 框架之構建路由

如果頁面亂碼,請調整編碼為 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 和 $params,前者是具體的 function 名稱,在這里就是 get,后者是這次調用傳遞的參數,即 Macaw::get('fuck',function(){...}) 中的兩個參數。第一個參數是我們想要監聽的 URL 值,第二個參數是一個 PHP 閉包,作為回調,代表 URL 匹配成功后我們想要做的事情。

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲一区观看 | 久久久久久国产一级毛片高清版 | 蜜桃av一区二区三区 | 欧美不卡一区二区三区 | 国产精品久久久久久久久图文区 | 日本中文字幕在线视频 | 亚洲理论电影在线观看 | 欧美精品一区二区三区蜜桃视频 | 一本色道久久综合狠狠躁篇的优点 | 亚洲乱码国产乱码精品精98午夜 | 欧美日韩成人网 | 国产精品久久久久久中文字 | 国产精品一码二码三码在线 | 日本一区二区在线看 | 综合视频一区 | 干片网 | 欧美freesex交免费视频 | 日韩视频在线观看 | 国产激情 | 亚洲一区二区免费视频 | 国产精品美女久久久久aⅴ国产馆 | 成人久久精品 | 中文字幕乱码一区二区三区 | 国产一区二区三区在线免费观看 | 久久久精品 | 中文字幕国产一区 | 久久99精品一区二区三区 | 亚洲欧美日韩精品久久亚洲区 | 精品在线播放 | 久久午夜精品 | 亚洲一级在线 | 免费一级毛片在线观看 | a天堂中文在线观看 | 精品国精品国产自在久不卡 | 日韩高清在线观看 | 欧美成人精品一区二区男人看 | 黄视频网站免费观看 | 欧美日韩亚洲另类 | 国产成人精品一区二区三区四区 | 日韩亚洲在线 | 亚洲综合精品 |