请原谅我使用架构这个词,词语太贫乏,冒犯这个词了。
上一篇我们搭建好PHP环境,下面我们来实现一个简单的框架。
具体的思路是这样:
- Application:应用,框架的主入口。全系统唯一单例模式(慢慢会取消单例)。
- 其他需要单例的类或static方法,通过保存在Application中的唯一实例来提供,我们称之为【服务】,比如路由服务、本地化服务、日志记录服务...
- 系统从这里启动,读取配置什么的
- 拥有模块管理功能(通过组合模式实现)
- Intent: 意图,从Android中引进的,可以认为是个上下文
- Module: 模块, MVC组件,实现具体功能
系统启动后,Application将PATHINFO作为参数,生成一个Intent;
Intent向Application请求路由自己;
Application解析出Module/controller/action,并执行(Module/controller/action会将响应写入Intent);
Intent返回响应。
下面来具体实现,大部分实现我们通过后面的章节来说说我的实现办法:
- 级联配置的实现:读取应用配置,通常使用全局函数,比如thinkphp,我们来实现一种级联配置,比起全局函数有很大的优势,具体看第12章。
- 意图是个什么东西?引入意图有什么好处,具体看第13章。
- 什么是洋葱链?Controller中意图的处理为什么要引入洋葱链,怎么实现?具体看14章:从larval中提取的洋葱链流水线。
- Orm的实现前篇一律?3个阶段的Orm实现思路,请看15章Orm进化之路。
- 统一的存取接口,缓存、文件、数据库读取采用统一的接口,具体实现在第16章
- 通过配置自动执行,一行代码也不用写,怎么可能?真的实现了,具体看可配置的自动执行模块在17章。
- 继承还是组合,还是Trait,在18章controller的改进里讨论。