PHP8.1.21版本已发布
vue8.1.21版本已发布
jquery8.1.21版本已发布

升级PHP7避免踩坑

coldplay.xixi
coldplay.xixi 转载
2021-02-19 09:33:24 2107浏览

推荐(免费):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也会出警告)

声明:本文转载于:CSDN,如有侵犯,请联系admin@php.cn删除