有没有熟悉多门编程语言(包含 PHP )的大佬,想问下 PHP 的开发效率到底快在哪里?
1
sun2920989 137 天前
起码 array 是真的方便
|
2
agdhole 137 天前 1
十年前对 startup 方便的包比较多,拉几个包就是一个项目,十年后的现在没有任何优势,反倒因为 fpm 还是巨大劣势了。
|
3
eoo 137 天前
起码 array 是真的方便+1
|
4
ixixi 137 天前 6
f5 f5 f5 f5 f5 f5
|
5
brader 137 天前
举个例子,做一个文章模块的后台管理功能,增删改查,你用其他语言要多久做好
|
6
aababc 137 天前
就这么说吧,我司前一段时间做了一个新的 app ,客户端 3 ( flutter) 人,服务端 1 人。25 天弄完,然后 app 就死了。
|
7
sampeng 137 天前
array 是 yyds
|
8
NjcyNzMzNDQ3 137 天前
内置函数一堆啊,str_xx array_xx ,又不放弃历史包袱没兼容问题
改了就好使,又不用编译 |
9
veni2023 137 天前
自己去用一下咯,半天估计就能上手一个主流 php 框架
|
10
QlanQ 137 天前
因为没有太严格的类型,array yyds ,加上 orm ,你代码里面可能看不到任何 sql 语法
|
11
QlanQ 137 天前
内置函数,强不强先不说,全那是真的太全了
|
12
x86 137 天前
用过对比过才知道是真的快
|
13
cleanery 137 天前 1
CRUD 的神
|
14
qW7bo2FbzbC0 137 天前
和 django ror 比起来呢?
|
15
Iakihsoug 137 天前
|
16
orlog 137 天前
不需要编译,不需要指定变量类型( nodejs 也具备这些优势,但是 php 的成熟开源项目更多些吧)
其他流行语言都不具备这两点 |
17
belin520 137 天前
修复 - 保存 - F5
|
18
dilu 137 天前 8
1. 万能 array/string ,加上一系列 array 的内置函数,什么一维二维转换,排序,提取全部 key ,提取全部 value ,数组合并等一系列业务中对于数组的常用操作都可以用一个内置函数搞定。字符串等操作更方便。
2. 比较优秀的 ORM ,collection 等等。基本不见 sql 代码,只要不是超级复杂必须用原生 sql 的逻辑,只要定义个 model 全都解决了,甚至不定义 model 都行,内置的各种 ORM 方法可以很快的解决一些非常简单的 curd 逻辑。 3. json 处理友好,数组/对象很方便的转成 json ,也能很方便的解析 json 。也跟 php 的弱类型有关,如果是 Go 这种强类型语言还得定义个结构体。当然强类型语言也有好处,但是开发效率确实会慢一点。 4. 无内存泄漏/全部 builtin 类型都是线程安全的,完全不需要考虑什么加锁之类的。没有并发心智负担。 5. 比较现代化的包管理/还算丰富的社区包/扩展,基本 web 常见问题都有对应的包。 6. 比较好的向前兼容,例如你用 php5.4 开发的代码,直接换成 php7 有 99.99%的可能性没有任何问题。 7. lnmp 架构比较简单,运维心智负担低,四五台中配机器抗起几万的 qps 没啥太大压力,性能也还算凑合。 当然 php 也有很多缺点,这里就不讨论了。 |
19
debuggerx 137 天前
主要是十几年前跟 C/C++、java 比,写起来自由方便,无需编译部署简单。
放到现在来说除去市场惯性因素,JS/TS 、Python 这些其实效率更高,[]和{}区分定义对前端来说也更少出现因为某些 phper 辖 JB 乱用 array 导致接口数据定义乱飞的情况 |
20
dilu 137 天前
@belin520 #17 说的也是一个优点,改完代码保存至今就能看结果,强类型语言还得编译一下,即使是 go 这种编译速度很快的语言,当项目变复杂/变大之后,编译也很慢。并且有时候如果有人引用了一个奇怪的包,例如只能在 linux 下用,mac 和 win 不能用的包,你就直接编译不了了,但是 php 不会有这个问题。
|
21
javalaw2010 137 天前
举两个 demo ,管中窥豹:
1. 返回一个 json 响应,一行代码: ```php echo json_encode(['code' => 0, 'msg' => 'success', 'data' => ['user_id' => 1, 'nickname' => 'foo']]); ``` 2. 如果你有一个 map ,你想翻转它的 key-value: ```php $map = ['red' => 'tesla', 'blue' => 'volvo']; $map2 = array_flip($map); ``` 其实就是得益于几乎万能的 array 和强大的内置函数。另外就是 fpm 模式简单粗暴地解决了内存泄露,让菜鸟写出来的代码也能稳定运行。 成也 array 败也 array 吧,数组的滥用导致了几乎在 php 的所有项目中 array 都乱飞,给团队协作带来了很大的不便。 |
23
lolizeppelin 137 天前
这类问题都和语言关系不大的....重点是框架
php 几个开箱即用的框架能快速出成品,会的人多上手也简单 |
24
ounxnpz 137 天前
可以 ssh 到 server 用 vi 直接改生产环境代码,改完立即生效
|
25
wonderfulcxm 137 天前 via iPhone
额,上面说的这些函数、数组用 ai 也就几分钟的事。
|
26
x86 137 天前
以前 tp3.x 的时候,你甚至可以一个 contorller 里写完成全部业务 🐶(畜生写法)
|
27
smirkcat 137 天前
直接改代码,无需任何编译,各种弱类型表述,框架多
|
29
lyxxxh2 137 天前
## 无需编译
可能你说,编译不久几毫秒吗,又不费时间。 后期编译型语言,改个字符串,你可能等 300-1500ms 才能刷新一次。 如果用 swoole: hyperf vs laravel,你会发现 hyperf 开发速度慢一大截。 ## 完整的包 ``` public function order(Request $request) { # 先删除 达成伪更新 AiOrder::where('video_id',$request->video_id)->delete(); $models = []; foreach ($request->statis as $statis){ $models[] = (new AiOrder())->fill( Arr::only($statis,[ 'device','single_number','single_id', 'total_number','good_num','person_id', 'images','good_num_statis','input_at','output_at' ]) )->fill([ 'video_id' => $request->video_id ]); } DB::transaction(function () use ($models){ foreach ($models as $model){ $model->save(); } }); return $this->ok( ['msg' => 'ok'] ); } ``` 这是我前几天写的,共 820 字符。 换成 go: ``` var requestData map[string]interface{} if err := json.Unmarshal(c.Ctx.Input.RequestBody, &requestData); err != nil { c.Data["json"] = map[string]interface{}{"error": "Invalid request format"} c.ServeJSON() return } // Get video_id from request videoID := requestData["video_id"].(string) ... from chatgpt ``` 2458 字符 |
30
2024 137 天前 1
市场份额不会说谎,管理后台、内容站清一色是 PHP ,可能其他所有语言加起来的份额都没有 PHP 大。
1. 管理系统,例如游戏领域,无论用什么语言开发的游戏,大概率还是要配一套 PHP GM 。 2. 内容站更是了,新闻站点、贴吧都是 其他脚本类型的语言例如 py 、node ; 有优点,但是缺点更大。 py: "WEB"基本只有运维系统这个领域超过了 PHP, 因为曾经 PHP 常驻应用模式不是主流。py 开发复杂逻辑太难阅读了,curd 又是频繁改动的。py 在智能领域是瑶瑶领先,但是 web 是真打不过。 node:国内小众,开发起来还不错,但是调试太难,例如闭包后,丢失上下文,基本没有办法监控一个请求有哪些逻辑(请求参数、影响结果、过程 LOG 、 有哪些对外部请求等等),而闭包用法处处都是。 |
31
zjsxwc 137 天前
php 优点是:少写代码,且通俗易读。
Java spring 属于多写代码,sping 一上就变成晦涩难读。 go 属于多写代码。 ruby ror 属于少写代码,但猴子方法把代码变的晦涩难读。 js 属于 async/await 把代码变的晦涩难读。 |
32
xiebinbin666 137 天前
php 开发快啊
一个人 我两天 在需求明确下 干一个后台 用这 flamentphp |
34
qwedcxsaz 137 天前
laravel 重度用户,轮子够多,什么需求都能满足
我之前发帖过的 [第一次做全栈,AI 考研英语,希望听听大家的意见和批评,谢谢各位!]( https://v2ex.com/t/1046939?p=1#reply22),用的 Lumen TDD 模式开发,后端占总开发的时间估计只有 20%,剩下的时候全都去弄前端和 ui 了 |
35
atan 137 天前
livewire+tailwind 前后端开发效率直线上升,如果算上后台管理再加个 filament 太轻松了
|
36
aaronnum7 137 天前
1 、开发快。一个基本的 Web 请求,Go 的话,需要先定义参数绑定结构体,响应结构体。PHP 不需要,直接读请求参数,输出直接 json_encode 。大部分 Web 业务,都是增删改查,涉及到的大多也是数组对象的一些操作。PHP 的数组和内置函数十分强大。
2 、调试快。如果发现某个地方有问题,直接改下代码,刷新页面就可以了。Go 的话,需要重新编译再执行。PHP 的 var_dump 可以直接输出变量的信息,简单粗暴。Go 也有断点可以调试,但是复杂结构的信息不如 var_dump 的直观。 3 、PHP 麻烦的地方,一个就是运行环境相对复杂一些,另外就是性能和并发问题。现在也有其他解决方案。 |
37
Mrun 137 天前
laravel 的 ORM ,是我做过的后端开发语言框架里面,最强的
|
38
PIECEx 137 天前 3
那是当年 Java 没 spring boot ,需要写的东西太多太重,也没 k8s 没 docker ,等等没有那种傻瓜式的一键部署的东西,并且 Jenkins 没那么的好用。
可是现在 Java 也行了,并且 Java 代码的优点刚好适用于目前的商业环境,没有 C++那样的复杂度,没有 PHP 的零碎,大型项目代码多了,比其他语言更好维护,并且开源社区给力,有问题有真大佬解惑,解决问题效率高的多。 毕竟 PHP 的简洁快速是有代价的(项目太大没有约束,写的太随意别人根本看不懂,基本无法维护)。 C 系的复杂度也有代价,只有维护过大型项目的人才知道维护效率多低,有时候多了一个维度后,复杂度指数级上升,对于从业人员要求更高。 而 Java 属于刚好找到了一个甜点,干碎了其他的语言,荣登 top 。 |
39
tabris17 137 天前
PHP 可以脱离框架和不依赖外部组件裸写 WEB 业务,这是其他语言做不到的。连 node.js 也做不到这一点
|
40
Felldeadbird 137 天前
不需要类型判断是最强的。结合万能的 array ,让人欲罢不能。
|
41
rahuahua 137 天前 1
动态语言开始写的爽,时间一长就是灾难,当然也可能产品死得快体验不出来
|
42
bigcat133 137 天前 2
这个说法最早是 php3 时代,可以轻松的将 php 当作一个模板系统,更新页面不用编译重启,还带各种语法糖帮你简写,新手上来就可以做些东西,也不用学什么面向对象、mvc 之类的东西特别是对比 java 那套东西简直无脑开发,当年很多新人入行就是靠的这个,项目配置不清楚可以直接用 php_info 来查看,相比现在做个东西起步就是要上手一个框架搭建还需要脚手架来支撑简直不要太 easy ,引入库也超简单。
错误处理也超简单,很多语言里的错误他直接抛个警告就完事,而且还可以在配置中将警告忽略,完全不用理会,很多时候开发人员只要页面显示的内容正确就完全忽略了这些警告 而且以前很多公司会用这玩意的原因还有一个就是生成页面缓存超容易,里面有一个 ob 系列的函数专门做这个处理,可以直接缓存页面的输出到磁盘,降低服务器端渲染的压力 只不过当前后端分离开始流行后 php 的这些优势就逐渐降低了,web 开发的复杂度也开始上升,这种时候 php 的一些弱点也开始出现,所以 php 也开始逐渐转向一些复杂框架结构,而这种时候我感觉 php 相对其他语言并不一定有什么优势 |
43
jonsmith 137 天前 via Android
写后台,配合一些脚手架,不用写多少代码,效率很高。
缺点是,弱类型虽然方便,但写的不规范,很容易出 bug 。 |
44
lucasj OP 大佬们,下面这套 Java 技术栈如何?我感觉也挺快的
Kotlin + Spring Boot + JPA/Mybatis Plus + JRebel 插件 + Vue.js + Vite + Element Plus + GitHub Action |
46
danhahaha 137 天前
就在你调研使用什么语言框架的几天时间里,人家已经搭建好后台,挂到服务器上运行了,至于用户量速度安全这些小问题相信后人的智慧
|
47
hukei 137 天前
tp3+layui 梭哈
|
48
maigebaoer 137 天前 via Android
只需要懂 array 就能开发了,这门槛够低了吧
|
49
sagaxu 137 天前
ssh xxx
vim balabala 一通改 :x 然后浏览器 F5 看效果 不编译,不打包,不重启服务 |
50
zjsxwc 137 天前
@DOLLOR #45 你简单代码,当然可以阅读,但遇到复杂点的业务,多个 await 相互循环调用可以把你绕晕,还不如直接 promise 。
PS 补充 js 的的另一个大缺点: 不能正常处理 64 位整数的基本运算,node 作为服务端 js 的实现,于是只能用 53 位的数字运算,整数用 53 位表示,浮点数也是 53 位。 于是如果一个正常的数据库( mysql 、sqlserver 、sqlite...)返回一个稍微大点的常见的 bigint 类型的有符号整数,比如 ~(1<<63) = (1<<63) -1 = 9223372036854775807 ,那么别的语言收到的都是这个数 9223372036854775807 ,但唯独 node 由于先天的残缺收到的值变成了这样: ``` >let bigintFromDB = 9223372036854775807; >console.log(bigintFromDB); 9223372036854776000 ``` 看到没,js 把 9223372036854775807 变成了 9223372036854776000 ,最后几位全变 0 了。 由于历史兼容原因,js 的数字运算在语言层面是残缺且无法修复的,现在 cpu 都是 64 位的,64 位的整数正常加减乘除运算是最基本的使用需求。 |
51
awalkingman 137 天前
@ixixi 我懂你!
|
52
DOLLOR 137 天前
|
53
DOLLOR 137 天前
另外我看不懂“多个 await 相互循环调用”是表达什么……
|
54
keller 137 天前 4
我认识的大多数 PHP 程序员都可以独立完成一个完整的项目(前后端运维部署等)
而我认识的 JAVA 程序员中很少有人能做到这一点 |
57
shiny 137 天前
年轻的时候直接在生产环境做开发。后来有个小工具开发着开发着发现,居然还有这么多人在用。
|
58
wangritian 137 天前
@PIECEx 刚好 php python go java 都有完整项目经验,java 使用率最高的原因绝对跟语言本身和 spring 的套娃设计无关,中小项目仍然是 php 领先,写成什么样其实看人不看语言。但 java 有大厂背书,大环境整体方向卷,最重要的生态最强大,从业人员也慢慢都向 java 靠拢。仅论开发效率,真的根本没法跟 php 比
|
60
DOLLOR 137 天前
|
61
mshx1 137 天前
先不说别的,你就说 array 好不好用吧
|
62
sagaxu 137 天前 1
@zjsxwc await 不如 callback?
for (...) { if (await ...) { continue; } if ((await ... || await ...) && (await ... || await ...)) { await ... } } 这种逻辑用 promise 更简单? |
64
linauror 137 天前
目前写一些需要立即使用的处理数据的脚本,都是用 PHP ,就是快
|
65
treblex 137 天前
https://github.com/crmeb/CRMEB/blob/3cd421d9873ed8c937460cc72f8bfbedf2a261d6/crmeb/app/services/order/StoreOrderServices.php
举个例子,array 到底有多好用😂,但这也是我不太喜欢 php 的原因 |
66
jackerbauer 137 天前
强大的内置函数,万能的 array ,好用的 ORM 加上 FPM 加持,不说了,我写的我的 PHP 代码去了
|
67
sayitagain 137 天前 4
作为一个 phper ,这个帖子看的我高潮
|
68
gqiuyuebai 137 天前
@sayitagain php 天。。。。。呜呜呜呜呜
|
69
slion 137 天前
看了这么多大佬的回复,突然想起一句话:PHP 是世界上最好的语言
|
70
NoobNoob030 137 天前
PHP 是世界上最好的语言
|
71
yc8332 137 天前
脚本语言的优势,然后又是弱类型的。。。快速开发真的方便,有问题,代码上去马上就能生效。
|
72
sky9401 137 天前
至少语法方面,比 node 不知道优雅到哪里去了
array 和 orm ,以及非常完善的标准库,写起来非常爽。 |
73
yellowsky 137 天前
Java 可以代表富人阶级,php 可以代表中产阶级和广大无产阶级,你可以说 php Low ,不高大上,甚至很屌丝,但是它群众基础好,易用亲民,低成本,高产出。
|
74
james122333 137 天前 via Android
1. 阵列
2. 内置函数 3. 官方文档(含范例) 当然 cgi 模式下可以 F5 立马看效果是额外优点没错 |
76
retrocode 137 天前 1
PHP 开发体验没得说, 要是团队稳定,或正规公司有专门的规范管理还好.
但问题是 PHP 太过敏捷了, 如果你接手过一些团队变动多次的 php 项目, 尤其外包项目明显, 你就会明白 php 的恐怖之处了. 这些老哥改 php 代码都不过脑子的, 只要不报错就完事 OK. 突然出现的全局变量/全局函数. 业务代码里任何一个地方都能出现的随意跳转, for 循环里查树结构 sql, 变态一点的在模版文件里直接查 sql. 每每想起我接手过的 php 项目就头皮发麻. 最骚的一个操作, 曾经接手一个项目, 客户说性能太慢让我优化下, 我一步一步 debug, 发现前一个老哥在 index.php 引入的一堆依赖里的某嵌套层次很深的地方, 加的日期+域名双重判断随机睡眠 10 到 120 秒... |
77
lshero 137 天前
现在有 serverless 其实 JS 就可以一把梭,但是 JS 现在的复杂的工程化感觉又让这一切失去了动力。
|
78
xiangyuecn 136 天前
不晓得为咋楼上都说 array 好用。。。
只有我一个人觉得 php 的 array 反人类吗? array 是值类型,直接传递将会复制一份,不加&没法修改原 array ,加了&,你就得配套 unset ,要是引用类型,啥毛病没有。如果我需要用到这个很少会用到的复制,我完全可以调个函数来自己复制 |
79
caqiko 136 天前 1
这些特性似乎比较像 python django?
|
81
liubaicai 136 天前
哈哈哈
|
82
yogogo 136 天前 1
Java 和 PHP 互写的表示,Java 越来越像 PHP ,PHP 越来越像 Java
|
83
james122333 136 天前 via Android
|
84
hubqin 136 天前
写完 go 再回来用 php 的 array ,觉得简直像瞎子赶路, 变得非常不适应了。强类型语言改点代码真的爽,重构分分钟钟的事。
|
85
thoo61871 136 天前 via iPhone
都有 AI 了 随便一个语言加上趁手的框架 效率大差不差
|
86
xierqii 136 天前 1
动态类型一时爽,代码重构火葬场
|
87
magiclx 136 天前 1
PHP 是服务器端脚本,这意味着保密,可以保护程序的实现。
PHP 代码可嵌入 HTML ,这意味着灵活,可按页面快速完整逻辑。 PHP 以原生代码广泛支持数据库,这意味着快速存取数据。 PHP 易于学习,语法类似于 C ,容易上手,这意味着容易找到 PHP 编程的人。 PHP 兼容主流平台。 PHP 可扩展,这意味着,在专有领域,也有解决方案。 PHP 框架和 CMS:这意味着大量成熟应用,开箱即用,成本低,自己定制开发也有 Laravel 、Symfony 和 CodeIgniter 。 PHP 是开源的,非常受欢迎,社区也很 nice ,成功案例有 WordPress 、Facebook 和 Wikipedia 。 PHP 的性能还在提升,支持现代编程实践,这说明生态有活力,不会被时代淘汰。 |
88
james122333 136 天前 via Android
|
89
v2bili 136 天前
说 array 的都是 PHP 小白, 应该说: [ ]
|
91
mshadow 136 天前 via Android 1
中小项目用确实快,大型项目一定会成为屎山。
大型项目需要严格执行代码规范、CR 、代码审查,禁用魔法操作,如果可以最好用 php8 以上的版本然后当强类型来写。但这对团队要求太高了,招到靠谱的 php 真的不如 java/go 容易。 总结,FPM 制约了上限,弱类型无限降低了下限。 |
92
shuimugan 136 天前 7
要看历史发展的,十年前接的项目大部分是各种商城、CMS 、论坛,很多开源项目可以利用,套个模板加个插件改一改就上线了。
上线部署也很粗糙,大部分是 FTP 上传后刷新,版本控制都少。给客户演示时还能当场上服务器改代码,保存立马生效。 大部分人都不会断点调试,就在代码里 var_dump 变量然后 exit 结束脚本,然后回浏览器按一下 F5 看输出结果然后继续写。 密码加密不是 md5 就是 sha1 ,这些都是内置函数。 写 Java 的还在纠结 json 库用哪个,选了 Fastjson 就有福了,一部分人整天在升级版本修漏洞,另一部分连自己系统被干了都不知道,而 JSON 处理在 PHP 里也是内置函数。 写 Java 的还在头疼日期和时间戳之间的处理,PHP 一个万能 date 函数就解决 99%的场景了。 写 Java 的还在头疼 url 参数编解码、特殊字符转义,PHP 内置函数又搞定了。 写的代码运行出错,一行配置或者代码前面加个 @ 就能抑制错误继续跑,try/catch 都不用,要是写 Java 还在挠头哪来的空指针。 前后端没分离的项目,还在纠结模板引擎选什么,写 PHP 的在包含 HTML 文本 PHP 的代码中改得飞快。 写 Python 的还在吵 Django 和 Flask 到底要用哪个,吵完了发现怎么上线还要套 Gunicorn 之类好麻烦。 写 Ruby 的表示 Ruby on Rails 非常牛逼,就是语言小众招不到人。 写 Node.js 的还在回调地狱里出不来。 在那个年代写 PHP ,你就说快不快吧。 |
93
fuyun 136 天前 2
|
94
longnight 136 天前 1
接触过的 PHP 项目不多。这些项目没一个带测试,写它们的都是些查 CSDN 那种人;全然屎山难以接手、重构。所以对 PHP 界没有好印象。
|
95
lilililili2020 136 天前 via Android
实用是王道。往往项目死了还在追求技术
|
96
rulagiti 136 天前
起码 array 是真的方便 +10086
|
98
suren1986 136 天前
如果是简单的需求,Java 还在定义模型,PHP 已经写完逻辑开始调试了。
|
99
Duanpei 136 天前
php 开发效率快是因为他的 array 无敌
|
100
realJamespond 136 天前
不用编译,直接改脚本直接出结果还不逆天? java 还要编译部署
|