我也来吐槽 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
23219 次点击
所在节点    PHP
143 条回复
kevn
2017-11-16 10:26:27 +08:00
1 这样的代码语法本来就是错误的,其他语言也照样会报错的,只是 php 无需编译,所以只有在运行的时候才出错
2 php 的灵活就是体现在这点上,脚本语言、无需编译、即改即用,但缺点就是其错误捕捉这块比较混乱,不好捕捉
3 但是也有一些令人抓狂的错误比如: "hello" == 0 这样的语句在 php 中返回的竟然是 true (虽然理论上说得通)
4 个人觉得 php 只适用于中小型 web 的快速开发,项目做大了是无可避免要用其他语言( java、c#等)重构的
5 最后,没有最强的编程语言,只有最强的程序员,作为 phpper 一定要注意错误捕捉这块
slince
2017-11-18 23:22:27 +08:00
纯属为了黑而黑
ritaswc
2020-01-31 00:11:21 +08:00
学艺不精怪语言 +1
为什么一个变量使用两种不同类型用途?

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

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

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

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

© 2021 V2EX