[吐槽]刚读了 yii3-demo, PHP 框架是怎么把 PHP (优雅的)玩死的。

2020-04-13 16:30:36 +08:00
 dvaknheo
虽然是看 yii3-demo 吐槽的,但 Laravel 等框架也适用。

业务代码里,和框架相关的代码越少才是耦合性越低啊。口口声声说解耦,但是一看代码里一堆和框架代码相关的,这能叫解耦么。

业务代码里,框架相关的代码多,意味着碰到框架相关的代码就越多

读代码,最怕的之一是:这东西怎么来的。 一两个特例马上能教人懂,多了没法马上会啊。

View 里不能做任何计算,不能 include 非 View 的代码。

Laravel 优雅的带着 PHP 优雅的 Java 化。当初 PHP 上手就干的年代,这是 PHP 的优势。

现在一堆代码,业务相关的没几行,这还是 PHP 么。

ORM 就非用不可么,Data struct 不容易理解么

有好用的文件路由不用,非得手写路由 (src/Factory/AppRouterFactory.php)
PHPer 的原则应该是 其他路由模式是文件路由的补充啊。

配置文件里一堆 use (config/web.php)

MVC 缺层都是大家的共识了, 业务逻辑层叫 Service 或 Logic 我都无所谓,但直接 Controller 里调用 ORM,以前 10k 行的 Controller 啊。 从 Controller 里把业务逻辑剥离出来,跑命令行测试不好么。

PHP 开发速度很快,运行速度也很快。 没必要为了那些优雅牺牲开发速度,运行速度。

讲真,我动力再足一点,写个同功能的 插进这些框架的 demo 中, 让大家见识一下应该用什么样的手段最符合 PHP 的快速开发模式。
16008 次点击
所在节点    PHP
126 条回复
stevenhawking
2020-04-13 16:43:07 +08:00
赞同, Yii 已经过了流行的年代了;
qq1340691923
2020-04-13 16:43:51 +08:00
多人合作
jhdxr
2020-04-13 16:49:42 +08:00
> ORM 就非用不可么,Data struct 不容易理解么
我寻思应该没有哪个框架能够拦着你用 PDO 吧?

> 有好用的文件路由不用,非得手写路由
单入口和多入口这两者的战争也得十年以上的历史了吧,但现在基本上都是单入口了。

> 但直接 Controller 里调用 ORM
没看过 yii3-demo,但是在 laravel 里至少这么做并没有被推荐?我印象中看过的大部分都还是会分一个 repository 出来
onion83
2020-04-13 16:54:04 +08:00
应该说 PHP 社区的节奏被 Java 那群人带坏了
firefox12
2020-04-13 17:02:53 +08:00
大人 时代变了, 这些已经被认为是必须的, 只能说 php 没有拿出好的解决方案来适应需求的变化。

刚开始玩 php 的时候 还是 4.0 时代, 那时候 主机可能只有 512M 内存,要跑 mysql php apache, php 简单灵活 面向过程是非常棒的。java? 不过是慢而笨重的代名词。现在普通主机也有 8G 内存, 慢 卡, 内存小已经不是 JAVA 的瓶颈,JAVA 开发规范 面向接口 这些优势被快速放大,所以 Php 没有新的东西 只能面对 模式上比不过 Java,用的人越来越少的情景。
lepig
2020-04-13 17:12:10 +08:00
上手就干的年代 已经过去了。不整点花 怎么涨工资
HiCode
2020-04-13 17:12:11 +08:00
昨天的吐槽:

1 、PHP 从一开始流行就是因为适合小型项目,开发效率及运行效率都不错;

2 、PHP 大流行后,部分有追求的程序员希望给 PHP 加一点 B 格,开始用各种模式要求 PHP,让 PHP 往 Java 方向发展。但 PHP 是脚本语言,Java 不是,Java 本身有足够的性能可以支撑起各种设计模式的性能损耗(但还是经常被吐槽太重太慢)——而 PHP 并没有这个性能来支撑。

3 、各类设计模式在 PHP 项目中的普及,确实提高了效率,增强了一丢丢的团队协作,但开发的复杂性和性能的损耗却让 PHP 失去了他最开始的拥趸。

4 、为了追求性能和模式,所谓高手们抛下了 PHP 改用 go 、java 、c#,留下一个所谓“优雅”的 PHP 开发氛围。


最近在优化自己框架的时候,在“性能”和“优雅”之间产生了疑惑,思考后有了上面的吐槽。

如果是打工,选择一个优雅的框架让自己写的爽——是非常有必要的,毕竟服务器成本是老板出的,钱能搞定的问题就不是问题。

如果是服务器钱要自己出,那就要好好考虑了。

我选择性能。
dvaknheo
2020-04-13 17:26:50 +08:00
@jhdxr
没看过 yii3-demo,但是在 laravel 里至少这么做并没有被推荐?我印象中看过的大部分都还是会分一个 repository 出来

Controller 里调用的就应该是业务逻辑的结果, 不管什么 repository 还是 orm 的东西。 我们要的就是一次调用得到的结果。

一个业务逻辑,可能要由 多个 repository 完成。 得到的 结果数组,输出给 view 。view 里基本不做计算。 因为 view 也得由 php 程序员来改,smarty 这类的模板,还是得由 php 程序员来改。没必要那么折腾。
weirdo
2020-04-13 18:03:41 +08:00
楼主加油,快让我们见识一下应该用什么样的手段最符合 PHP 的快速开发模式。 [绝对没有阴阳怪气!
wangyzj
2020-04-13 20:43:51 +08:00
上手就干
所以我还在用 tp3 和 yii2
ipwx
2020-04-13 20:48:17 +08:00
楼主的思维,和 jQuery 一把梭的老人,我觉得都差不多。
Takamine
2020-04-14 00:13:27 +08:00
P++正在路上。 :doge:
ywisax
2020-04-14 01:22:37 +08:00
这种事情,要看业务复杂度的。单纯跑个 demo 就来批评前辈很不妥当。

另外,一个很明显的趋势就是 web 业务复杂度正在不断提升,所以 PHP 社区更加关注的是怎么降低业务复杂度,提高代码复用,Java 社区就是个很好的参考。

所以,Lara/Yii2 的做法一点都没问题。Lara 的 Facade 、Yii2 的 Components 都是好的设计。组建起他们的各个组件,如 symfony 家族、codeception 等等工具,都是很值得去琢磨的东西。
luckyrayyy
2020-04-14 01:51:47 +08:00
为什么我想到了 thinkphp 挺合适
king888
2020-04-14 08:15:30 +08:00
思维要转变下,通过产品为导向,没必要计较这些事情,所有产品前期重点都不是考虑这些事情上面的,优雅不优雅,跟你产品运营,融资关系不大,只有小步快跑迭代,才能在所有竞争者中冲出重围,钱到位,什么技术栈,什么技术架构,不是水到渠来的事情
lp7631010
2020-04-14 08:35:39 +08:00
看到你这么讲 突然有点理解前端工程师为什么折腾那么多花里胡哨的前端框架出来了,讲道理,那些花里胡哨的前端框架是不是比 jquery 有很大的进步,就像你拿现代的 php 框架和上古时期的 php 写法比差不多
cooooler
2020-04-14 08:40:37 +08:00
拿落后当先进?
MeteorCat
2020-04-14 08:52:15 +08:00
当年鸟哥也吐槽这个问题,很多框架越来越冗余
zjsxwc
2020-04-14 08:52:43 +08:00
PHP 论框架设计的好,低耦合,还得是 symfony,那么多框架、那么多三方库都是基于 symfony,毫无疑问是 php 生态的基石
neroransom
2020-04-14 09:09:27 +08:00
的地得要用对

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/662007

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX