对主流框架不感冒,想开发属于自己的框架,寻求不同见解或同好朋友

2017-07-17 00:13:36 +08:00
 gavinczhang

simple 框架

simple 框架(github)是一款简单、高效、易用的 PHP 开发框架。

为什么要有 simple 框架

从 0 到 1

基于上述逻辑,整理下一个框架所需要实现的功能,及所有功能所需要的积累。

设计思路

我认为作为一个后端底层框架,只需要为开发者提供最核心最常用的功能即可,其中包括:

框架架构图

涉及技术

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

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

欢迎各种吐槽。 原文地址

6522 次点击
所在节点    PHP
44 条回复
zhengwenk
2017-07-17 17:07:23 +08:00
@wellsc 嗯 我也觉得练手的话就默默的
breeswish
2017-07-17 18:39:08 +08:00
楼主嫌一个大框架组件多有些要替换的话可以用 Symfony 自己组合呀

config -> symfony config
route -> symfony routing / fastroute
request/response -> symfony http foundation
db/orm -> symfony database (doctrine)
cli -> symfony console
cookie/session -> symfony http foundation
Log -> monolog
curl -> requests
template -> twig
jarlyyn
2017-07-17 18:48:32 +08:00
做框架很正常啊,一般用着用着就有需求做框架了。

但自己写框架不是应该是流行框架有和自己的业务流程不符的地方,或者不想被流行框架的版本升级绑架么……

也就是不是流行有缺点。

而是自己做框架能解决痛点……
fantiq
2017-08-22 14:37:20 +08:00
开发一个再也没争议的框架,工具齐全,可以吃几年的那种。
不过要把 php java go nodejs 这些语言的框架研究一遍,总结出一个更好的~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/375784

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX