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 7
本文的意义是秀自己对PHP的无知?
|
3
raincious 2015-02-22 00:10:59 +08:00 1
不知道其他人怎么决定目标版本的,我自己目前将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 2015-02-22 00:15:53 +08:00
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 1
直接返回一个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 1
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 2
故意用[]‘表示数组,气死5.4以下用户
|
20
msg7086 2015-02-22 04:15:38 +08:00 via iPhone 1
为什么不用adodb之类的抽象层呢
|
21
nine 2015-02-22 05:01:46 +08:00
也许可以证明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 1
……写的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 1
@jamlee 因为项目缘故是全平台支持的(其实也就Windows + Linux,其他的才懒得跑;就算是Linux也就跑跑CentOS和Ubuntu而已) + 自行封装各种数据库(8个)类 + 网络(3个)类 + 缓存(8个)类,几乎要把所有跨平台的坑都踩一遍了……
|
42
chinvo 2015-02-22 12:51:09 +08:00
趕緊換pdo,pdo大法好。
bind傳array、防注入、有對象。 |
44
kmvan 2015-02-22 13:45:08 +08:00 via Android
任何软件都会不断发展的,并会抛弃落后时代的特性。
正如 ie6 至 ie11 ,这是时代发展的需要 |
45
qiuai 2015-02-22 13:48:40 +08:00
用的好就别去追新.这是唯一的忠告.
作为一个仍然在用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 2015-02-22 17:04:21 +08:00
@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 2015-02-22 18:43:29 +08:00
|
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
楼主在秀无知么?
|