[发泄贴] 原来 PHP 每一个子版本都是不同的语言……

2015-02-21 23:30:52 +08:00
 schezuk

PHP初学,把自己的代码部署到了一个叫做id666的免费空间,PHP版本是5.2.9
因为不想关心错误代码,于是自己封装了一个mysqli函数(我不是很懂PHP下类使用以及PDO……)
叫做safe_query()(见libMysqli.php,欢迎抓虫)


因为我要同时return整形值affected_rows和返回的数组
(update等sql语句不返回数据,所以affected_rows有必要)
因此我把查询后要返回的数组做引用传值safe_query($query, &$result, $bind_params = NULL)

然后他们告诉我$stmt->bind_param()第一个参数要传值,剩下的要传引用
我按要求封了一个array,第一个元素byVal,剩下的byRef,用call_user_func_array()传过去


结果他们又告诉我call_user_func_array()5.2版要传值,5.3版要传引用。
于是我还得作区分,抄了一个refValues($arr)按版本区分这个数组怎么传

我琢磨着这下大概可以兼容全部PHP5了吧~~~~


一个月以后,我又写了另一个项目,电脑重装之后顺便安了个WAMP(PHP5.5),打算本地调试
然后他喵的告诉我Fatal Error: Call-time pass-by-reference has been deprecated!!!!

DEPRECATED!!!!

你妹!

搜索了一下,说是allow_call_time_pass_reference = On可破

BULLSH***************T

PHP 5.4.0就已经REMOVED!一点渣都不剩了!

你叫我怎么版本兼容???你叫我怎么版本兼容???


谁能告诉我PHP这些版本到底是不是一个语言?!为什么朝三暮四这么严重?!翻脸不认人么?


还有json_encode,直到5.4.0才支持JSON_UNESCAPED_SLASHESJSON_UNESCAPED_UNICODE么?
满脸的\uHHHH,你知不知道你浪费了一倍空间?!居然要自己用回调pack每个匹配,简直酷炫!


以上纯属发泄,一开始用6年前版本的PHP就是我的不对。

说这么多就是想问问大家,目前大家的机器主要跑什么版本的PHP?^_^

7819 次点击
所在节点    PHP
76 条回复
zsx
2015-02-22 12:49:36 +08:00
@jamlee 因为项目缘故是全平台支持的(其实也就Windows + Linux,其他的才懒得跑;就算是Linux也就跑跑CentOS和Ubuntu而已) + 自行封装各种数据库(8个)类 + 网络(3个)类 + 缓存(8个)类,几乎要把所有跨平台的坑都踩一遍了……
chinvo
2015-02-22 12:51:09 +08:00
趕緊換pdo,pdo大法好。
bind傳array、防注入、有對象。
jamlee
2015-02-22 13:15:39 +08:00
@zsx 辛苦辛苦啊 哈哈
kmvan
2015-02-22 13:45:08 +08:00
任何软件都会不断发展的,并会抛弃落后时代的特性。
正如 ie6 至 ie11 ,这是时代发展的需要
qiuai
2015-02-22 13:48:40 +08:00
用的好就别去追新.这是唯一的忠告.

作为一个仍然在用PHP5.2的虚拟主机服务商,我想告诉你的是,并不是所有人和程序都已经准备好去PHP5.3甚至5.5了.

这是一个悲伤的故事.
wezzard
2015-02-22 14:28:28 +08:00
今天遷移代碼至Swift 1.2,發現:
「原来 Swift 每一个子版本都是不同的语言……」
schezuk
2015-02-22 14:29:00 +08:00
@qiuai 目前暂时要考虑兼容5.2.9-2和5.3.5,希望不会有什么问题吧……
本地调试的WAMP已安PHP5.2到5.6全部,我已经无人可挡了!
lianyue
2015-02-22 15:48:27 +08:00
hjc4869
2015-02-22 16:07:08 +08:00
@kmvan IE11的企业模式可以兼容IE8。。别拿巨硬这一套兼容的程度来跟开源界比。。
qiuai
2015-02-22 16:27:21 +08:00
@schezuk 如果你不折腾,应该5.3到5.6的改变都不会影响到大部分业务的正常使用才对...
neoblackcap
2015-02-22 16:37:14 +08:00
@shiny 一般真写Python的人都不会觉得2,3另人很崩溃,我见过最多的是大家在吐槽Python 3(比如3.3的性能之类的问题)。说Python2,3兼容很大问题的一般多见于有老库不想更新不想投入时间维护的人。要知道Django这么大框架也可兼容2,3两个大版本,当然,就目前而已,科学计算领域的库还没有完全迁移。多使用Python2是真的。
shiny
2015-02-22 17:04:21 +08:00
@neoblackcap I mean 用 PHP 写全版本兼容不是问题, python 就很难做到。
脱离上下文来解读回帖会曲解原意。
sarices
2015-02-22 17:17:32 +08:00
虚拟主机一般都用5.2.x或者5.3.x,还有的用4呢,虚拟主机本来就很多用户,特别是已经很久的服务器,不会随随便便升级php版本的
sarices
2015-02-22 17:18:33 +08:00
还有一个就是务必保证开发环境和生产环境一致,虚拟机就是这个用的
ShiningRay
2015-02-22 18:22:13 +08:00
PHP 有很多遗留问题,一点点解决也是好事
schezuk
2015-02-22 18:39:20 +08:00
@qiuai
问题是我现在需要从 PHP 5.2.9 迁移到 PHP 5.3.5……
而且我找不到 PHP 5.4.0 以下版本的WAMPServer……
qiuai
2015-02-22 18:43:29 +08:00
schezuk
2015-02-22 18:45:24 +08:00
@qiuai 我安上了,不过好像config出了点问题……
konakona
2015-02-22 18:47:06 +08:00
那你不是要被python2.7会3.1虐死?
其实php最大的几个版本分别是5.2 5.3 5.4

之后的相对还好。

你关注下这几个版本的新特性即可,尽可能用高版本。

高的版本会禁止mysqli就说明它有一定缺陷,官方推荐使用pdo,mysql依然可用。
qiuai
2015-02-22 18:53:48 +08:00
@schezuk 我不在windows上跑PHP,所以不知道.你研究下看看.

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

https://tanronggui.xyz/t/172108

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

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

© 2021 V2EX