前言
从本章开始,我们继续造轮子,去完成一款类似于Laravel的现代化PHP框架,为什么说是现代化?因为他必须具备一下几点:
遵守PSR-4加载规范
使用Composer进行包管理
标准的HTTP请求方式
优雅的使用设计模式 开始我们无需关心性能问题,先考虑框架具体需要实现哪些功能,这与实现业务就大不相同了,来!开始我的表演。
前期
做任何一件事情都要有个前期准备工作。
1、作为PSR-4的规定,我们命名空间得有一个祖宗名字,这里我叫他神圣的 《z_framework》。
2、至少需要一个GITHUB库来存储这个项目:https://github.com/CrazyCodes/z_framework。
3、创建一个composer.json文件用于进行包管理,灰常简单,phpunit搞进来。通过psr-4加载个项目命名。
最后我们就需要考虑下目录的结构及其我们第一步要完成的功能,核心的结构(这里并非只的项目结构哦。是框架的核心结构)暂且是这样:
路由
还记得第一次使用Laravel时我们第一步做的事情吗?是的,去研究路由,所以我们把路由作为框架的第一步。在研究路由前,我们要知道:
是如何实现的,php默认是必须请求index.php或者default.php的,上述链接实际隐藏了index.php或default.php ,这是Nginx等服务代理帮我们做到的优雅的链接,具体配置如下,实际与Laravel官方提供无差别:
通过:
去解析请求,通过上述可以得出:
好了,明白了其中奥秘后,我们开始路由的编写,在 src/Routes/Route.php:
实现
首先我们先创建一个简单的接口文件 src/Routes/RouteInterface.php:
从Get请求开始:
最后实现Get代码块:
如果你想测试上述代码,可使用phpunit,或者傻大粗的方式,这里便于理解使用傻大粗的方式。
创建一个目录,随后按照Laravel的目录形式创建几个目录:
最后public/index.php文件中去调用路由:
到这里我们就基本完成了路由的功能,下一章将完善路由的编码。
致谢
感谢你看到这里,希望本篇可以帮到你。具体代码在https://github.com/CrazyCodes/z_framework。
欢迎关注 SegmentFault 微信公众号 :)
领取专属 10元无门槛券
私享最新 技术干货