
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!!!!
你妹!
搜索了一下,说是allow_call_time_pass_reference = On可破
PHP 5.4.0就已经REMOVED!一点渣都不剩了!
还有json_encode,直到5.4.0才支持JSON_UNESCAPED_SLASHES和JSON_UNESCAPED_UNICODE么?
满脸的\uHHHH,你知不知道你浪费了一倍空间?!居然要自己用回调pack每个匹配,简直酷炫!
1 jsonline 2015-02-21 23:55:37 +08:00 PHP是最好的语言。(好到我学不会) 结帖。 |
2 gkuchan 2015-02-21 23:56:08 +08:00 本文的意义是秀自己对PHP的无知? |
3 raincious 2015-02-22 00:10:59 +08:00 不知道其他人怎么决定目标版本的,我自己目前将PHP自己的目标版本定为5.4,因为很多内核apt-get/yum拿不到最新的PHP 5.6哪怕5.5。 5.2.9版本太旧了。如果你想使用新的语言特性,就不要使用那些低端的免费空间。(开个低端VPS随便也能闹得很欢)。 另外,要针对接口编程,而不是针对实现编程。而且其实你其实需要在了解MySQLi之后为再为他封装操作类/函数,而不是设想好一个功能然后想方设法的向功能需求上靠近。 关于“Fatal Error: Call-time pass-by-reference has been deprecated”这条提示我太喜欢了,有利于接口规范化。试想如果你的程序里一会儿是reference,一会儿不是,那么后期维护要麻烦死了。 |
4 shiny PRO Python 2/3 才叫崩溃 目前用 PHP5.4 |
5 viko16 2015-02-22 00:16:47 +08:00 不要对 5.3 以下的进行妥协,平时使用 5.4 ,尽量向 5.5/5.6 靠拢,心里憧憬着 7 我自己是这样的 ^ |
6 yangff 2015-02-22 00:17:46 +08:00 via Android 直接返回一个array不就行了。。 |
7 Actrace 2015-02-22 00:18:55 +08:00 服务器是最新版本php5.6.5 |
8 kn007 2015-02-22 00:23:52 +08:00 5.5.20记得是。。准备升到5.6了。。。正在更新函数 |
9 msxcms 2015-02-22 00:28:38 +08:00 难道希望一个脚本语言6年不变? |
10 xuhaoyangx 2015-02-22 00:38:49 +08:00 php5.6+opcache值得一试。 还是跟着新版走比较好。 |
11 sumhat 2015-02-22 00:45:55 +08:00 楼主要稳定学 Java 吧,从 Java 5 到 Java 7 基本没有变 -_- (Java 5 是 10 多年前的事情了,去年刚出了 Java 8) |
12 arachide 2015-02-22 00:50:26 +08:00 deprecated 多? cocoaer飘过 |
13 bombless 2015-02-22 00:52:37 +08:00 via iPhone mysqli的这套绑定我以前用的时候的确感觉不太稳定 不知道后续版本怎么样了。我用的时候5.5还没出来呢 |
14 mhycy 2015-02-22 00:57:40 +08:00 后端服务器5.2 前端服务器5.3 本地5.2 |
15 mhycy 2015-02-22 00:59:12 +08:00 补充: 我现在都是随便给PDO打个包就直接用了。。。 (主要是定义一些函数用于参数化查询) |
16 oott123 2015-02-22 01:29:49 +08:00 via Android 我觉得楼主在用写 c 的心态写 php 每门语言有自己的哲学…php 的 call user func 那函数反正我能不用就不用233 |
17 Septembers 2015-02-22 01:46:33 +08:00 跟随PHP当前最新稳定版升级 |
18 wezzard 2015-02-22 02:27:02 +08:00 一般用 RoR,永用最新的定版。 |
19 kookxiang 2015-02-22 02:58:33 +08:00 via Android 故意用[]‘表示数组,气死5.4以下用户 |
20 msg7086 2015-02-22 04:15:38 +08:00 via iPhone 为什么不用adodb之类的抽象层呢 |
21 也许可以证明php正在大踏步前进。 经过若干个几斤版本之后,有可能会变成一门好用的语言。 |
22 schezuk OP |
23 zts1993 2015-02-22 10:06:32 +08:00 对于一个版本之间兼容性高达99%以上的语言,你正好使用了那被废弃的1%,就说兼容性不好,也是醉了。。。。。 |
24 wdlth 2015-02-22 10:30:02 +08:00 你连版本之间的区别都没看就想着兼容?还总用那些旧的。你看看魔术引号被废弃后多少程序得重写。 |
25 chinvo 2015-02-22 10:47:26 +08:00 要在HHVM上部署的代本地用5.4,其他5.5。 主用些冷的西,PHP的文5.2到5.5,出法兼容的的部分真的很少,主要都是些用起有的玩意。 |
26 zsx 2015-02-22 10:52:19 +08:00 ……写的PHP支持5.2到5.6,测试7和HHVM没问题的简直要哭瞎了? 一堆人在Windows下进行开发(好像很少见?),用IIS + PHP Manager进行版本测试。为了用PHPUnit、phpfmt等工具所以主PHP版本为5.6。 估计还是代码写的比较小心吧=.= |
27 wulin 2015-02-22 10:52:25 +08:00 暂时是5.5, 新项目优先选择最新稳定版,除了性能提升,新加的语言特性也很方便,至少不用写array了233333333333 |
28 blue7wings 2015-02-22 11:24:30 +08:00 @kookxiang 我也特别喜欢这么用,array(),总感觉不够优雅。。 |
29 jamlee 2015-02-22 11:27:23 +08:00 php7 期待中 一直在关注鸟哥的微博。 |
30 jamlee 2015-02-22 11:27:49 +08:00 @xuhaoyangx 同样是推荐opcache |
31 branchzero 2015-02-22 11:28:01 +08:00 写的项目如果是自用就不考虑兼容性了,直接最新稳定版走起。 之前做一个外包的时候客户环境是5.2(后来写完部署的时候才和我说,而且不能变),然后一通改,唉。。。 「PS:所以外包开发之前就应该和客户商量谈好环境,省的悲剧」 有变化才证明这个语言在不断进步吧。 版本更新之后变动比PHP还多的语言就更数不胜数了吧? |
32 blue7wings 2015-02-22 11:28:28 +08:00 PHP 5.5.9,期待php7 |
34 blue7wings 2015-02-22 11:30:25 +08:00 @branchzero +1,同觉得,有变化才有进步,像python2和python3的区别就更大了。 |
37 xian366 2015-02-22 12:25:28 +08:00 via Android 话说可以用func_get_args()或者传一个数组过去,其实实现方式往往不是一种,如果搞不懂可以搜索下,新入门一个需要入乡随俗。 @schezuk |
38 oott123 2015-02-22 12:32:40 +08:00 via Android |
39 schezuk OP |
40 oott123 2015-02-22 12:46:40 +08:00 via Android 没用过 MySQLi ,一般只用 pdo 。 不过看了看楼主说的那个函数,感觉这样的语法十分的别扭…想不出有什么非用这种函数不可的理由。 话说手册里也提示了有坑。 嘛…这倒是让我感受到了原来 mysqli 设计得如此神keng奇die… |
41 zsx 2015-02-22 12:49:36 +08:00 @jamlee 因为项目缘故是全平台支持的(其实也就Windows + Linux,其他的才懒得跑;就算是Linux也就跑跑CentOS和Ubuntu而已) + 自行封装各种数据库(8个)类 + 网络(3个)类 + 缓存(8个)类,几乎要把所有跨平台的坑都踩一遍了…… |
42 chinvo 2015-02-22 12:51:09 +08:00 pdo,pdo大法好。 bindarray、防注入、有象。 |
44 kmvan 2015-02-22 13:45:08 +08:00 via Android 任何软件都会不断发展的,并会抛弃落后时代的特性。 正如 ie6 至 ie11 ,这是时代发展的需要 |
45 qiuai PRO 用的好就别去追新.这是唯一的忠告. 作为一个仍然在用PHP5.2的虚拟主机服务商,我想告诉你的是,并不是所有人和程序都已经准备好去PHP5.3甚至5.5了. 这是一个悲伤的故事. |
46 wezzard 2015-02-22 14:28:28 +08:00 今天移代至Swift 1.2,: 「原来 Swift 每一个子版本都是不同的语言……」 |
47 schezuk OP @qiuai 目前暂时要考虑兼容5.2.9-2和5.3.5,希望不会有什么问题吧…… 本地调试的WAMP已安PHP5.2到5.6全部,我已经无人可挡了! |
51 neoblackcap 2015-02-22 16:37:14 +08:00 @shiny 一般真写Python的人都不会觉得2,3另人很崩溃,我见过最多的是大家在吐槽Python 3(比如3.3的性能之类的问题)。说Python2,3兼容很大问题的一般多见于有老库不想更新不想投入时间维护的人。要知道Django这么大框架也可兼容2,3两个大版本,当然,就目前而已,科学计算领域的库还没有完全迁移。多使用Python2是真的。 |
52 shiny PRO @neoblackcap I mean 用 PHP 写全版本兼容不是问题, python 就很难做到。 脱离上下文来解读回帖会曲解原意。 |
53 sarices 2015-02-22 17:17:32 +08:00 虚拟主机一般都用5.2.x或者5.3.x,还有的用4呢,虚拟主机本来就很多用户,特别是已经很久的服务器,不会随随便便升级php版本的 |
54 sarices 2015-02-22 17:18:33 +08:00 还有一个就是务必保证开发环境和生产环境一致,虚拟机就是这个用的 |
55 ShiningRay 2015-02-22 18:22:13 +08:00 PHP 有很多遗留问题,一点点解决也是好事 |
56 schezuk OP |
57 qiuai PRO |
59 konakona 2015-02-22 18:47:06 +08:00 那你不是要被python2.7会3.1虐死? 其实php最大的几个版本分别是5.2 5.3 5.4 之后的相对还好。 你关注下这几个版本的新特性即可,尽可能用高版本。 高的版本会禁止mysqli就说明它有一定缺陷,官方推荐使用pdo,mysql依然可用。 |
61 wdy1184 2015-02-22 19:47:27 +08:00 PHP5.3以下就不要用了。 |
62 neoblackcap 2015-02-22 20:23:25 +08:00 @shiny 我理解你说python的版本兼容跟php有差距,但是我只是觉得Python的版本兼容并没有你口中所说的那么严重,至少我没有遇到过因为Python3跟2而出现很大的兼容问题,可能也由于我都是写新代码的缘故吧。 |
63 quericy 2015-02-22 20:40:56 +08:00 主要还是用PHP 5.3和5.4的居多吧 |
64 zhicheng 2015-02-22 21:42:20 +08:00 via Android 我用的Python第三方依赖绝大多数都是同时兼任 2 和 3 的,Python 官方也同时维护两个版本,且在 2 上提供兼容 3 的方法,编程语言和标准函数库这种东西不怕大改,就怕每个小版本改来改去,改来改去,改来改去,改来改去。换我肯定不用了。。。 |
65 opelnic 2015-02-22 22:03:43 +08:00 就当一门新的语言学学吧。 服务器上面同时有5.2 5.3 5.4 5.5。有些老程序不能很好的和新版玩耍。 |
66 invite 2015-02-22 22:04:47 +08:00 我从PHP到Python了,哈哈哈哈哈哈哈哈。 PHP那帮人,思想太多,太杂,试图统一宇宙。 |
67 c2q1989 2015-02-23 12:42:36 +08:00 可以淘汰PHP5.4以下的版本了,毕竟网络编程发展太快,又不像C/C++这种面向机器的语言 |
68 jacob 2015-02-23 16:08:56 +08:00 @oott123 lz为什么不学下oo呢,我反正觉得oo很方便,重要的是我写得爽,效率不考虑,以我的水平还不需要省那点苍蝇腿。 虽然不知道lz在写什么东西,为毛要用call_user_func那类的函数,那些劳什子本来就有很多兼容问题,否则各框架和类库也不会严重依赖php版本。 哪个语言都有些G点,我的原则是绕着走。 |
70 Mars 2015-02-24 03:50:03 +08:00 5.3.29....产生时不要用太新版本 ,太新的容易出问题。经验之谈。。。 |
71 hitsmaxft 2015-02-24 09:48:45 +08:00 via iPhone 5.2到5.3改变太多了,应该直接升大版本号才容易理解 5.4,5.5 改动相对小。虽然也是存在兼容性问题 |
74 lincanbin 2015-02-24 13:59:20 +08:00 |
75 picasso250 2015-03-05 15:43:42 +08:00 楼主,你去看看文档先好不好。楼上的文档你好好看看。要不然你就别用PHP了,c更适合你。 |
76 yokle 2015-03-06 13:47:12 +08:00 楼主在秀无知么? |