看到学 Java 反哺 PHP 有感

2020-08-18 09:46:07 +08:00
 zarte

真的,php 只要做 php 好吗!
从用被大拿瞧不起的 tp 框架开始用起,到了后来的 composer 出现,Laravel 那套真的是头大,看评论说过运行个 hellow world 都要耗很多资源,还有 sowft 的 entiy,db,data,logic 分层。。有时间 composer 自己弄个简易的框架不香么?
php 为啥之前那么多人用还不是因为可以快速开发一把梭,你把 java 那套搬过来整得一套一套的,真有这功夫为啥不用 jsp ???
一个语言就应该应用于擅长的领域,异步的后端需求可以用其他语言呀例如 go,上手也简单。

9879 次点击
所在节点    PHP
87 条回复
zarte
2020-08-18 10:23:10 +08:00
@cmdOptionKana 如果真的是一门语言可以胜任各种领域就不会有那么多坑了。。。倒是不会妨碍到我,只是会导致 php 没有新人进入,也就没以前那么多人自发弄各种轮子了。
makia98
2020-08-18 10:27:20 +08:00
刚毕业,主 laravel,我带的师弟们要学 php 的我也是推荐 laravel,而且他们都愿意接收,不知道楼主为什么说 php 没有新人进入
zjsxwc
2020-08-18 10:35:34 +08:00
php 擅长的难道不是, 写代码效率高,容错率好,对懒人新手程序员宽容,用户用起来觉得爽吗。

楼主怎么会觉得 php 只擅长作为“模板语言”。

php 用来搞运维、写 web 服务端、写常驻内存进程也挺合适的,真要高性能了我还是倾向于 c/cpp 、rust 。
whitehack
2020-08-18 10:36:32 +08:00
@Vegetable 总感觉你在说我这类人... https://github.com/whtiehack/wingui
zarte
2020-08-18 10:41:51 +08:00
@zjsxwc 运维不是应该 py 跟 shell 么?
zarte
2020-08-18 10:42:14 +08:00
@makia98 看来是我想错了。
instein
2020-08-18 10:43:11 +08:00
你先把 hello world 拼写正确。
自己学艺不精还怪框架?
zjsxwc
2020-08-18 10:44:50 +08:00
@zarte

我公司的运维就是用 php 的,原因是
shell 功能太弱,
py 运维碰到缩进问题难受,尤其是 ssh 过去处理问题时。
Chappako
2020-08-18 10:54:56 +08:00
总有一些人一直劝人不要使用更先进的工具和思想,他们坚信原始的就是好的

* 我捕猎就能吃地很好,那些傻子去种地多麻烦
* 我们克行周礼,你弄个劳什子胡服骑射
* 我大清是天朝上国,你搞什么洋务运动,弄那些个奇技淫巧有什么用
* 我算盘打地贼溜,你计算机开机的时间我都算完了
wellsc
2020-08-18 10:58:30 +08:00
让我数数你有几个 typo
cmdOptionKana
2020-08-18 11:01:27 +08:00
@zarte PHP 肯定是走下坡路,但如果说原因在于 Laravel…… 这感觉是偏见。

php 的下滑应该是外部原因,JavaScript 的爆发导致的。你想想,本来在 html 页面内直接内嵌 php 语句是一大优势,但是 js 的前端框架发展起来后,显然有碾压性的优势。

另外一个重要原因是现代化 IDE/编辑器的发展,使 Java 等各种后端静态语言写起来非常方便,因此 php 、ruby 、python 等动态语言都受到了很大影响。以前 IDE 不够好用,动态语言写起来很爽,但现在 IDE 非常智能,反而是静态语言写起来更爽。
lucybenz
2020-08-18 11:03:12 +08:00
@masker 楼主写到这里的时候,资源已耗尽; 导致出现 BUG, 请重启楼主后再次 DEBUG
ben1024
2020-08-18 11:04:27 +08:00
语言是问题,开发者理解能力更是问题
visonme
2020-08-18 11:12:15 +08:00
我用 slim,偶尔也用 symfony,最近在看 RoadRunner+Spiral Framework
Laravel 那套确实也让我头疼,不过这不影响它做为一个优秀的框架 存在👍
avalon0624
2020-08-18 11:27:25 +08:00
因为当项目运行得越久,一把梭的开发留下来的坑就越明显:无法维护。
如果是外包即写即弃型的小项目,那么快速堆是好事,但是对于一个持久运行不断更新的项目,不说新人接手项目,原开发在三个月之后能明白自己写的时候,对应的变量内容是什么么?在更新上线前,能保证更新不导致其它问题么?
用 Laravel 或者 ThinkPHP 的规范去约束开发,目的是为了减少单一开发或产品离职对项目可维护性的破坏。
Helix225
2020-08-18 11:35:27 +08:00
@Vegetable 看看这里嘲讽的人,“技术大拿”们比 p***hub 和 niconico video 的程序员更懂,巴不得马上去入职用 java 重构拯救他们破烂不堪的 php 项目
levn
2020-08-18 11:36:17 +08:00
上游产什么下游吃什么
skyworker
2020-08-18 11:36:23 +08:00
最近也在用 java(spring cloud 微服务)和 laravel 同时做项目, 有点体会.

首先这两个项目都是 react 的前端, php 和 java 都是做 api, 提供数据的 crud 接口.

同样做一个表格的 CRUD 接口, 如果用 laravel 的话, 定义好 model 的 fillable 后, 并且为了方便扩展, 我们用了 mysql 的 json 字段储存动态字段.

在 laravel 的 model 中,把 extra 之类的 json 字段 cast 为 array 之后, 增删改查的接口基本上不到 10 分钟就完成了. 并且例如分页之类的功能,laravel 也是只用增加一个: $data = $query->paginate() , 然后 return response()->json($data) 就 OK 了.


而在 spring 中, 先不说各种微服务造成的开发阶段额外的时间, 做一个 CRUD, 要在 ibaits 配置各种配置文件, 还要写 manager 类, 通过 manager 类读取数据后, 还要用 fastJson 之类的 lib 做数据转换. (并且对于 extra 之类的 json 字段处理非常麻烦, 因为 java 是静态语音), 然后各种数据类型转换, 最后才能输出结果.


如果中间涉及各种调试, php 是非编译语言, 直接在 code 中 dd($data) 就能看到调试数据;

而在 java 中, 每次修改代码, 都要手工或者 IDE 重新编译代码,才能看到效果, 如果中间逻辑有问题, 甚至要重启数十次 service, 非常耗费时间.


大致评估下, java 带来的开发成本远比 laravel 多, 写 java 代码和配置文件, 要比 php 多 2-3 倍的时间(配置文件 /类型转换等等); 而如果在调试阶段, 考虑到重启 service 的耗费时间, 估计耗费的时间会更多.


所以目前的 java 系统要做新功能, 直接把功能迁到 laravel 接口上了, 开发时间节省很多倍.

当然, 作为编译语言, java 服务的运行时比 php 快的多, 不过目前的项目远没有到"百万并发"的级别, 都是需求方在拍脑袋上功能, laravel 带来的开发阶段效率提升, 作用还是非常大的. 如果今后项目稳定后, 并且如果并发高了后, 可能会考虑再迁移到 java spring 上.
dongisking
2020-08-18 11:41:29 +08:00
@skyworker 思路不错,就是两个后端的路由得分清楚
Yano
2020-08-18 11:53:27 +08:00
@skyworker 我感觉使用 Java 的小项目,直接 Spring jpa 就好了,没有必要整一堆配置文件。虽然 jpa 有些不灵活,但是基本 crud 还可以。

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

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

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

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

© 2021 V2EX