作为一个从 cake,ci,kahana,zf,yaf,yii1,yii2...一路用过来的人来说,每次接触一个新的流行框架,都学习了一种新的解决问题的办法,每一种框架的流行都是有其道理的,他的道理就是他迎合和解决了那个时段的主要问题。
至少我用起来,写的代码是越来越安全了,团队效率是越来越高了,而不是越来越低了,代码性能定位越来越容易了,而不是性能问题越来越突出了。
@
dvaknheo 这东西怎么来的。 一两个特例马上能教人懂,多了没法马上会啊。
Yii 定位是 advanced 框架,强调是安全、可配置、可扩展、性能可见。不是 ci,cake 等脚手架、helper 类之类的框架。
View 里不能做任何计算,不能 include 非 View 的代码。
可以啊,你看的是伪 demo 吧随便找一个,既然是 PHP 文件,不能计算,你是来搞笑的吗?
https://github.com/yiisoft/yii-demo/blob/master/views/contact/form.php,
当然可以 include,但是你得搞对路径啊,但是建议采用$this->render 替代。
Laravel 优雅的带着 PHP 优雅的 Java 化。当初 PHP 上手就干的年代,这是 PHP 的优势。
上手就干是 4.3 以前的优势,后来的主要优势是社区、开源项目、官方库。
现在一堆代码,业务相关的没几行,这还是 PHP 么。
因为已经不需要写这么多业务代码了,你配置好 rule 之后,自动驾驶了,自动驾驶你不应该关心是否有方向盘,而应该是自动驾驶是否可靠。
ORM 就非用不可么,Data struct 不容易理解么
有 Yii::$app->db->createCommand 和 Query 任你调用
有好用的文件路由不用,非得手写路由 (src/Factory/AppRouterFactory.php)
route 不用任何配置都可以跑的,你用的是官方 demo 么?
配置文件里一堆 use (config/web.php)
是的,这次改版最大的变化之一了。
为了遵守 psr 规范,让各大框架组件能够通用目标,牺牲小我为大我。。牺牲精神值得赞扬,但是我也觉得太多了,其实以前是隐藏的,现在变得开放出来的。也可以理解框架为了变得通用,不得不做各种抽象,比如缓存,日志,数据库为了兼容各种方案,不得采用各种适配器。如果你自己写一个框架,不用兼容那么多场景,那么这块确实是可以简化的(笑)。
MVC 缺层都是大家的共识了, 业务逻辑层叫 Service 或 Logic 我都无所谓,但直接 Controller 里调用 ORM,以前 10k 行的 Controller 啊。 从 Controller 里把业务逻辑剥离出来,跑命令行测试不好么。
和 Yii2 无本质区别,加了类型的 PHP 。。。作者 samdark 以前是搞 JAVA 的?或者指使代码写多了,记性不好了,加了类型便于 IDE 方法提示,如果你记性一致很好,那么可以不要这个类型提示,代码一样可以跑的。
至于你说的 Service 和 Logic 有什么必要吗?参考我上一个回复
PHP 开发速度很快,运行速度也很快。 没必要为了那些优雅牺牲开发速度,运行速度。
开发速度,得看工具和生态,Yii 有 gii,有各种数据服务器端,客户端验证,各种第三方库。
运行速度,性能优化得看性价比、定位速度和解决方案,Yii 等框架提供了 debug,性能问题一目了然。我在一台 4 核 8G 得 CPU 也可以跑一年几亿得交易额,我觉得性能非常好了,如果再发展,我是能花钱可以添加一点机器资源的。Yii 的四层 cache 设计方案,可以让你控制缓存在页面,局部 HTML,数据,请求级别。
讲真,我动力再足一点,写个同功能的 插进这些框架的 demo 中, 让大家见识一下应该用什么样的手段最符合 PHP 的快速开发模式。
我倒觉得是时候去框架了,不过我认为值得尝试解决方案是云函数+UI 仓库+项目仓库,看看国内大厂和国外新兴就知道,越来越向 low code 发展了,但是 low code 的基础是大量成熟的解决方案,所以我认为当前符合 PHP 的快速开发模式就是一套成熟的云原生的框架加各种 demo 。其他的话我并不看好。
@
zjsxwc symfony 确实是标杆,甚至比以前 zf 做得更好,值得尊敬。目前在 PHP 界都在向 psr 靠拢。
@
HiCode 1 、PHP 从一开始流行就是因为适合小型项目,开发效率及运行效率都不错;
同楼上的回复,这是 4.3 以前的优势,后来的主要优势是社区、开源项目、官方库
2 、PHP 大流行后,部分有追求的程序员希望给 PHP 加一点 B 格,开始用各种模式要求 PHP,让 PHP 往 Java 方向发展。但 PHP 是脚本语言,Java 不是,Java 本身有足够的性能可以支撑起各种设计模式的性能损耗(但还是经常被吐槽太重太慢)——而 PHP 并没有这个性能来支撑。
PHP 为什么性能不好,知道吗?
解决性能问题首先要做是定位,通常说 PHP 性能不好的,不能常驻内存导致的吧,至少我还没有发现其他 PHP 性能不好的地方,至少我觉得够用了,举一个其他例子?
常驻内存可以用 swoole 之类的解决下,当然也没必要仅限于用 PHP 开发。
3 、各类设计模式在 PHP 项目中的普及,确实提高了效率,增强了一丢丢的团队协作,但开发的复杂性和性能的损耗却让 PHP 失去了他最开始的拥趸。
PHPer 也可以学习的,而且以前的方式还是可以用啊,为什么大家都愿意用了呢?因为以前的方式已经发展到头了啊,满足需求了啊,新的方式适用新的方向。
4 、为了追求性能和模式,所谓高手们抛下了 PHP 改用 go 、java 、c#,留下一个所谓“优雅”的 PHP 开发氛围。
高手们抛弃 PHP 采用 GO,
不是因为性能和模式。
而是环境,
环境变化了,
恐龙就不能生存了,
云计算、大数据的环境来了,
人类为了掌握周边环境降低风险,
天生就会自动去觉察掌握学习周边环境便于生存,
go 和 PHP 方向还是不一样的,
如果你用 go 去开发一个电商网站,
比如人人商城这类的这时候你会觉得还是 PHP 好,
如果你去开发一个 FQ 工具或者爬虫或者即时通讯服务端,无疑 GO 跨平台编译,协程让你飞起来。
如果我们学习后不能思考工具的适用场景,那么就不是真学了,这也是码农和架构师的却别吧,码农拿着锤子都是钉子,架构师所有工具都能恰如其分的使用。