首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

来!狂撸一款 PHP 现代化框架(一)

前言

从本章开始,我们继续造轮子,去完成一款类似于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 微信公众号 :)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181207B07TLP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券