框架设计原则
编写框架的初心
造轮子才能够成长的更快,虽然现在php主流框架很多,如果按照我现在自身的能力,想要打造一款稳定并且性能优越的框架难于上青天,因此,写在前面的是,该框架适合初中级学习PHP的面向对象以及熟悉现代化PHP的开发,毕竟有很多工作了多年的PHPER,连composer或者框架某个组件的实现原理都不懂,最要命的是,之前在v2上看到一个四五年工作经验的在问链式调用是怎么实现的,实在是非常不应该了。
编写框架遵循的几个原则
分享一下,写这个框架的时候,我踩的坑以及遵循的几个准则。如果跟着怎么开发这个框架的思路走,你能够学会使用composer以及组件的开发,单元测试,php对象以及了解设计模式
必须使用composer来开发
基于以下几个原因:
- 不重复造轮子
- 解决依赖的问题
- 重点:compoesr提供了一种不允许修改的可能 改框架是忌讳,首先是1. 不可维护,2.升级咋个玩,你只能继承来实现你要个性化的地方,我不允许你个性化的地方你是必须遵循框架行为了
只做一些必须处理的工作
- 例如异常处理,中间件,数组处理
- 规定好开发统一规范,以及约束一些必要的准则,例如控制器位置,路由文件 - 代码风格规范
- 错误处理规范
- 包管理
- 契约规范(接口)
- 单元测试规范
- 功能开发的流程规范
其他的交给开发者
- 使用composer来开发
- 需要什么库自己引用,没有库就自己开发
- 减少框架学习成本,开发者不需要看繁杂的文档,需要使用啥自己引入库文件使用
代码简单,可读性高,单文件代码量少
可快速给开发阅读整个框架源码并且可迭代升级,有利于框架的鲁棒性
尽量减少引入一些奇淫技巧
- 生僻函数的使用
- 乱七八糟的设计模式
- 复杂的写法
- 当然laravel有些奇淫技巧可参考,比如pipline
不引入一些全局变量跟常量还有不必要的全局方法
尽量限制到命名空间里边定义,防止变量污染以及版本升级带来的问题,例如laravel最近的一次merge,Deprecate useless Arr and Str global helper methods
追求性能的极致体验
经得起压测
阅读其他框架源码
可阅读学习laravel以及slim框架源码,当然也可看下tp,ci,yii,相互对比,才会有高低