程序员程序猿的进阶屋

yii 框架简析

2017-11-21  本文已影响314人  daydaygo

date: 2017-11-21 10:50:00
title: yii 框架简析

因为工作原因需要重拾 yii 框架, 而之前一直使用的 hyperframework -- 公司技术团队内部开发的框架, 需要什么服务, 直接往框架上添加即可. hyperframework 底层是服务容器, 需要添加新的服务很简单, 这个在我之前的 blog hyperframework WebClient 源码解读 / 用 yii 框架 10 分钟开发 blog 系统? 都有提到, 不熟悉的同学可以移步一览. 所以思路上需要做一点改变: yii 已经封装好了很多常用服务, 开箱即用.

PS: 这篇博客的英文版标题是 get_yii.md, 纪念一下我在 github 上加入的第一个开源组织以及开源项目 iiYii/getyii. 一晃三年过去了, 在此对开源作者表达诚挚敬意!

之前也提到过, 这样的重型框架之所以入门比较困难, 很大一部分原因是功能太多, 导致难以分清主次和记忆. 这里记忆不是死记硬背, 而是知识的内化, 不过知识的内化说起来更难以理解, 倒不如说是想要达到知识随用随取信手拈来的境界, 你起码得记得吧. 当时也提到一些方法, 这篇 blog 会进行完善并实践.

简析 yiii 框架的方法(类似的重型框架都可以采用这个思路):

生命周期

通过生命周期来 解读源码/定位问题 是非常非常重要的手段. 鸟哥 在他的博客中, 无论是源码分析, 还是问题解决, 多次实践, 这里摘录 思考能力何其重要.. 中的一段话:

没有, 好吧, 如果说一定要有, 那就是:vim + grep + “大胆推论,小心验证”, 我知道一个c写的可执行文件, 是从main开始的, 我知道对于mod_php来说, 开始点必然在apache将控制权交给它的那一刻开始, 有了这些, 就可以使用vim徜徉在海一样的代码中, 而不会迷路. 有了这些, 不就足够了么?

yii 框架的生命周期, 虽然在应用上会做如下分类:

但是其实是统一的, 都是对应程序的输入与输出(input/output), 只是在 http 请求这里, 使用 request/response 来表示, 而在后台脚本这里, 使用 argument/option 表示输入, 脚本中直接 echo/print 表示输出

php cli life cycle 运行进制

核心架构 & 模块划分

image

这张图里, 最核心的其实是: 应用主体, 其他部分, 都是通过应用主体来协调调度, 甚至你可以认为, yii = application(container) + component(service)

我制作的 百度脑图: get_yii, 带上了标识表示我理解的重要性.

工具 & 实践

熟悉我的同学可能都知道, 我比较喜欢用 思维导图, 平时也喜欢 记笔记, 部分观点在之前也提到过, 这里再赘述一下:

当然还有一些其他的工具, 主要遵循 一图胜千言 的理念, 比如流程图, 时序图, 这就看场景了, 不过使用频率没那么高.

关于实践, 我们前任 CTO 的建议我会一直铭记:

多读源码

上一篇 下一篇

猜你喜欢

热点阅读