我也来吐槽 PHP 最垃圾的地方

2017-10-20 17:09:39 +08:00
 gouchaoer

神奇的 array,这种情况很多

php > $a=[];
php > echo $a[1];
PHP Notice:  Undefined offset: 1 in php shell code on line 1
php > $a=null;
php > echo $a[1];
php > $a=4;
php > echo $a[1];

另外最受不了的就是以下的情况,很多时候一个对象可能为空,这个直接抛 Fatal error 退出脚本简直要命,不过这个在 php7 之后似乎改成抛异常了

php > $o=null;
php > $o->fun();
PHP Fatal error:  Call to a member function fun() on a non-object in php shell code on line 1
PHP Stack trace:
PHP   1. {main}() php shell code:0
22249 次点击
所在节点    PHP
143 条回复
pangliang
2017-10-20 17:17:58 +08:00
$o->fun(); o 是 null 这句不报错继续执行不是更要命?
liuguang
2017-10-20 17:20:10 +08:00
自己代码问题,还怪 PHP 报错
cuebyte
2017-10-20 17:23:06 +08:00
@liuguang 对,PHP 没问题,都是辣鸡码农的错。

这就是解释型语言咯(摊手
kunluanbudang
2017-10-20 17:24:31 +08:00
基本共识了, 语法层面,

有些东西, PHP 就是与主流语言显得与众不同
kunluanbudang
2017-10-20 17:25:20 +08:00
JS 写起来舒服多了
HYSS
2017-10-20 17:25:49 +08:00
我觉得你写法肯定有问题 如果一个属性是对象的话 肯定不可能是为空的
silencefent
2017-10-20 17:29:46 +08:00
语法这个层面其实也没什么,主要还是性能不高
今天为了新增一个积分数据,涉及关联 6 张表,十几个字段,然后运行更新,限制了 300 条数据都跑出超时(超时时间 300s ),最后 100 条 100 条的改,搞了很久
Mrun
2017-10-20 17:31:49 +08:00
@silencefent 这个跟性能有什么关系,大概率是 DB 设计的有问题
2ME
2017-10-20 17:34:40 +08:00
array 那个没毛病阿 只是在 array 的情况下给你个提示 只是看着不爽 三次 echo 的结果应该都是一样的

你可以选择关闭掉 Notice 提示 满足强迫症

现在的工作是做爬虫和脚本 深有体会 Fatal error 真是要命..
cdwyd
2017-10-20 17:36:39 +08:00
@silencefent
这个锅 php 肯定不背
RLib
2017-10-20 17:38:55 +08:00
不是 array 隐含转成 array, 是 array 就检查 index, 合乎情理...
gouchaoer
2017-10-20 17:42:44 +08:00
@2ME 都说了这个在 php7 下不会 Fatal error 改抛异常了,我建议你把你爬虫随便找一个 web 框架的 console 中跑,一般 web 框架 hook 了 warning 啥的变成异常,catch 起来很简单那
gouchaoer
2017-10-20 17:43:49 +08:00
@kunluanbudang 50 步笑 100 步,脚本语言里面每一个好东西
zhs227
2017-10-20 17:55:35 +08:00
@silencefent 相对于数据库操作的时间,php 脚本的逻辑执行时间少得可怜。你说的这种情况用其它语言速度可能也快不到哪里去。

对于费时的操作可以使用 phpcli 运行,防止超时造成数据丢失或者重复,慢点就慢点。容器配置了脚本都有超时时间是相对于其它语言的一大特色
crabRunning
2017-10-20 17:57:17 +08:00
```
let a = null;
typeof null === 'object';
a.test // fuck
```
fcten
2017-10-20 18:20:06 +08:00
某一楼已经充分表明了 PHP 的巨大优势——门槛低
yxn1910
2017-10-20 18:27:02 +08:00
虽然黑 PHP 是政治正确,但是似乎大家都没有黑到点上。。。失望。。。
misaka19000
2017-10-20 18:31:03 +08:00
楼主竟然敢黑 PHP,真是胆大包天
pqee
2017-10-20 18:39:41 +08:00
七楼建议退出 PHP 届。
十七楼说得对!
WuwuGin
2017-10-20 18:39:48 +08:00
等于说 7 楼这货是怎么能说 PHP 性能差的,赶快在表结构逻辑不变的情况下展示一下其他语言的性能。

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

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

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

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

© 2021 V2EX