升级PHP7避免踩坑
推荐(免费):PHP7
之前就听说php7这个版本有很大的提升,终于公司的项目也要升级到PHP7了。
升级之前看了一下大家整理好的一些介绍,发现这个版本是从底层开始就有很大的更改,当然,效率也提升了很多。
除了一些新增的功能(这个大家都已经写的很全了,写一些我没看到的,随着项目的踩坑慢慢更新吧)
扩展部分
1.注意自己的php版本,去下载/安装对应的扩展,我这边是windows环境,就去下载dll文件来用
友情提醒:注意ini配置的扩展地址,我这里开始还奇怪,怎么我的扩展都没有扩展上,在phpinfo()当中没有信息啊!怎么都没想到,地址写错了!~~该打
2.5.x的版本用memcache的人应该比较多,我们公司的项目也不例外,但是memcache更新支持到php5.6的版本就不更新了,看了一下有改用memcached的,还有自己重新编译的,我觉得我们升级的比较晚应该有人上传这个支持PHP7的版本了吧,于是真找到了。
贴一下连接,直接去找对应的版本就好:https://github.com/nono303/PHP7-memcache-dll
3.phalcon也有支持php7的版本了,也是直接找对应的版本就可以:https://github.com/phalcon/cphalcon/releases/tag/v3.4.1
代码部分
1.split这个方法在php不可以使用了,可以根据需求使用preg_split or str_split or explode 进行替代
2.自定义函数传参时,参数一定不能没有值 是什么意思呢 看以下代码说明
错误:
function test($name) { if(empty($name)) { echo 'php7时会出现致命错误!~'根本到不了这里; } }
正确:
function test($name=null) { if(empty($name)) { echo '这里就可以正常执行了~'; } }
很遗憾,我这个项目当中很多都是这么写的(大致就是没有时间值时再读取一个默认时间!~)
间接使用变量、属性和方法的变化
表达式 | PHP 5 的解析方式 | PHP 7 的解析方式 |
---|---|---|
$$foo[‘bar’][‘baz’] | ${$foo[‘bar’][‘baz’]} | ($$foo)[‘bar’][‘baz’] |
$$foo[‘bar’][‘baz’] | $foo->{$bar[‘baz’]} | ($$foo)[‘bar’][‘baz’] |
$$foo[‘bar’][‘baz’] | $foo->{$bar[‘baz’]}() | ($$foo)[‘bar’][‘baz’] |
Foo::$bar’baz’ | Foo::{$bar[‘baz’]}() | (Foo::$bar)[‘baz’]() |
使用了旧的从右到左的解析顺序的代码必须被重写,明确的使用圆括号来表明顺序(参见上表)。 这样使得代码既保持了与PHP 7.x的前向兼容性,又保持了与PHP 5.x的后向兼容性。(文档说的)
其他大致就是7.X对比5.X的时候警告多了许多,变得很严谨(会提示各种参数无效,甚至做计算时除以0也会出警告)
以上就是升级PHP7避免踩坑的详细内容,更多请关注其它相关文章!