simple 框架
simple 框架(github)是一款简单、高效、易用的 PHP 开发框架。
为什么要有 simple 框架
- 学习 /锻炼 /积累 /实践 /进步
- 现有的框架太臃肿,部分包含了大量的 jQuery 等前端代码,而日常的后端开发工作中并用不到此类的依赖。
- 无存在意义的模板引擎。
- DI、IoC 等设计思路下设计出的框架,学习成本较高。
- 做过相关压测,主流框架大部分性能较差。压测数据
从 0 到 1
基于上述逻辑,整理下一个框架所需要实现的功能,及所有功能所需要的积累。
设计思路
我认为作为一个后端底层框架,只需要为开发者提供最核心最常用的功能即可,其中包括:
- composer 支持 /目录结构符合 PSR-4 规范
- 错误机制
- config
- route/mvc
- request/response
- DB/ORM
- CLI
- cookie/session
- Log/curl/iptable/redis 等锦上添花的类库
框架架构图

涉及技术
composer
composer 是 PHP 用来管理依赖( dependency )关系的工具。可以在自己的项目中声明所依赖的外部工具库( libraries ),Composer 会安装这些依赖的库文件。
基于 composer 开发的代码,可以让使用房快速加入自己的项目中,且可以很好的管理需要使用的版本。另外框架约定好按 PSR-4 规范后开始开发,可以省去了 autoload 的工作量(当然是有代价的,曽压测过使用 composer 的 autoload 和自己实现 autoload 的性能大概相差 15%,但是当项目足够大,需要依赖的外部资源足够多时,这个差距会逐渐的缩小)。
错误机制
保证框架运行过程中的健壮性,当框架捕获到相关异常,允许用户自定义异常处理方法,可以快速开发出满足自己业务逻辑的功能模块(例如快速实现 404/500/异常上报等功能),以及调试模式下快速定位问题。
config
用于快速读取配置文件,通过定义的预定义常量自动读取对应环境的配置。
route/mvc
route 即路由机制,通过 url 匹配一段规则后,找到对应处理的类和函数。 MVC 为模型-视图-控制器模式,用一种业务逻辑、数据、界面显示分离的方法组织代码,已经成为 web 开发的必会标准模式。
request/response
深入了解 HTTP 协议的 request 和response
DB/ORM
选用 mysqli 或 pdo 实现 DB 的基本 query/fetch/insert_id 等操作。 在此基础上,实现 SQL 语句的快捷构造封装 SQL builder (将数组生成对应 SQL 语句)。 在此基础上,实现 ORM (对象-关系映射)的基本封装
CLI
在日常的开发工作中,定时脚本任务的开发必不可少,因为便捷的开发基于 CLI 模式运行的脚本也是必须要满足的条件。
cookie/session
Log/curl/Iptable/redis 等锦上添花的类库
Log 用于调试开发等方便打印日志输出。 日常工作中经常需要发送一些 http 请求到特定服务器,或从某服务器拉取相关数据,curl 使用率非常频繁。 在提供纯接口 server 时,对 ip 段限制的需求会经常遇到。 redis 发展到今天,无论是做缓存,还是作为稳定可靠的 DB 提供服务都毫无问题。
写在最后
目前 simple 框架不断优化、调整,已经迭代至 4.0 版本,有了近两年时间的思考和积累,某些代码的实现确实需要改进,因此有了 5.0 版本的规划和思考。准备将 5.0 版本开发过程中的一系列问题一一记录在案,并对 route、DB build、curl 等一些类库的封装思路进行详细的说明。
我也希望能有认同我观点的朋友参与进来一同思考、讨论、开发,也希望有不同观点的朋友能提出各种批评或者建议,让我们共同探讨技术,一同进步。
欢迎各种吐槽。 原文地址