我 fork 了一个 yii3 demo 的版本(大概 80%进度),在 入口处 加了些代码,强行插入 duckphp 框架版本的实现。见
https://github.com/dvaknheo/yii-demo我切 github 默认分支不是 master 分支,而是 for_duckphp 分支。
for_duckphp 分支,实际干了两个分支的事情,后面再拆分。
for_duckphp 另一个分支功能的事情 是 service 化。src/service 目录 ,抽出来,单独成立一个分支,然后画关系图让大家看看 这部分和 duckphp 没关系
最主要的就是在 index.php 入口 插入 duckphp 版本的实现。
duckphp 版本的特点
1. 只在 composer.json 依赖一个包:dvaknheo/duckphp 1.2.3 。
2. 相关实现都在 app 目录底下。其他文件只改了 public/index.php ,src/Command 目录的命令行入口。
3. 保证输出和 yii3 demo 一致。原有 bug 不改。入口文件在请求完之后 curl 原来 url,如果相同输出,则输出 same. 否则输出 different 并在 runtime 里加 a.php ,b.php 方便对比。
4. 业务逻辑提取成 Service 层 . 6 个目录,view 是视图目录,config 是配置目录, Model 跟着 表走,Controller 负责输入,输出 view 前处理,业务放到 Service 。 Base 目录是核心才动的目录。基本上不交叉引用。
用 cloc 算了一下 app 目录 1760 行,比 src 目录 2289 行少点, 还有点 yii 的引用,主要是 3 个复杂组件没拆解,也不想拆解,留着就行。 分页还有进一步调整可能。
两个星期折腾这个代码,感觉有点慢。 或许,就弄了个大白象?
回头来看 yii2 的代码主要还是 卡在 behaviors 和 actions 上, 说不定哪天就重写了。 然后把 gii 也重写了。
到现在,逆行工程,主要还是,这玩意从哪里来的? 这玩意被什么东西悄悄调用? 这玩意里面有什么?
yii3 里 那个 widget PostCard 在 view 里计算 我就很不爽, 后面拆解成 view 文件 ,传入 array 。看上去清晰多了。
还有想吐槽的暂时记不清,就暂时到这吧。