在上一篇文章中,我们创建了一个空的Composer项目,本文将解释如何构建一条路线。
著名的CodeIgniter框架是很多人PHP开发的入门框架,也是我学习如何从头开始建网站的框架。我从CI中学到了很多,其中对MVC的深刻理解和对框架本质的理解对我影响最大。从使用框架提高开发效率的角度来看,框架的本质是路由。
让我们开始建立自己的路线。首先,去GitHub搜索:点击这里查看搜索结果
推荐https://GitHub.com/NoahBuscher/Macaw,对应的Composer包是coding bean/macau,作者要在github上改名字,可能会引起一些麻烦。开始安装Macaw包并更改composer.json:
{ ' require ' : { ' coding bean/macau ' : ' dev-master ' } }运行composer update并在成功后获取以下目录:
至此,金刚鹦鹉包安装成功!
这是见证奇迹的时刻!我们将赋予MFFC活力,让它真正运转起来!
创建一个新的MFFC/公共文件夹,这将是用户唯一可见的部分。在文件夹下创建一个新的index.php文件:
?Php//“自动加载自动加载需要”./vendor/autoload . PHP ';//路由配置需要'./config/routes . PHP ';上面一行表示引入了Composer的自动加载功能,下面一行表示加载了路由配置文件。创建新的MFFC/配置文件夹,并在其中创建新的routs.php文件。内容如下:
?phpuse NoahBuscher Macaw MacawMacaw:get('他妈的',function () {echo '成功!';});Macaw:get ('(:all)',函数($ fu) {echo '与路由br不匹配。$ fu});maca w3 3360: dispatch();金刚鹦鹉的文档位于https://github.com/NoahBuscher/Macaw.请根据你的HTTP服务软件类型设置伪静态。事实上,它和大多数框架一样:“将所有非静态文件指向index.php”。
然后,由Apache或Nginx为MFFC/公共目录分配一个端口,建议由Apache或Nginx完成。
如果使用PHP内置的HTTP服务器:
CD public PHP-s 127 . 0 . 0 . 1:3000将导致Macaw:get('他妈的'必须写成maca w3 :3360 get('/他妈的'才能响应。
在当前代码中使用Apache mod_php和Nginx php-fpm没有问题。
我在本地绑定端口81,访问http://127 . 0 . 0 . 1:81/去他妈的看看:
如果页面乱码,请将编码调整为UTF-8。如果您成功看到以上页面,恭喜您,路由配置成功!
金刚鹦鹉只有一个文件,除了空行,只有100多一点的行。我们可以通过代码直接了解它是如何工作的。下面我简单分析一下:
1.composer的自动加载将在每次URL驱动MFFC/public/index.php后,在内存中维护一个完整的命名空间类名到文件名的数组,这样当我们在代码中使用一个类时,该类所在的文件将被自动加载。
2.我们在路由文件中加载了macau类:“使用NoahBuscher Macaw Macaw”,然后调用静态方法:get()两次,该方法不存在,将由mffc/vendor/coding bean/Macao/Macao . PHP中的__callstatic()接管。
3.这个函数接受两个参数,$method和$params。前者是具体的函数名,这里是get,后者是这个调用传递的参数,也就是macaw:3360get('他妈的',function () {中的两个参数.}).第一个参数是我们想要监听的URL值,第二个参数是一个PHP闭包,作为回调来表示URL匹配成功后我们想要做什么。
4._ _ callstatic()做的事情也很简单。它将tarGET URL(即/找死)、HTTP方法(即GET)和回调代码压入三个Macaw类的静态成员变量(数组)中:$routes、$methods和$回调。
路由文件最后一行中的maca w: dispatch();方法是真正处理当前网址的地方。那些可以直接匹配的将直接调用回调,而那些不能直接匹配的将通过正则匹配。