Gavin

simple框架5.0版本开发笔记

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等一些类库的封装思路进行详细的说明。

我也希望能有认同我观点的朋友参与进来一同思考、讨论、开发,也希望有不同观点的朋友能提出各种批评或者建议,让我们共同探讨技术,一同进步。

v2ex讨论

码字很辛苦,转载请注明来自淡兰色的海洋《simple框架5.0版本开发笔记》

评论