框架设计原则


编写框架的初心

造轮子才能够成长的更快,虽然现在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,相互对比,才会有高低