PHP7变量处理机制修改


Posted in PHP onMarch 09, 2021

PHP7版本对变量解析机制做了调整,调整如下:

一、间接变量、属性和方法引用都按照从左到右的顺序进行解释:

 $$foo['bar']['baz'] // interpreted as ($$foo)['bar']['baz']
 $foo->$bar['baz']   // interpreted as ($foo->$bar)['baz']
 $foo->$bar['baz']() // interpreted as ($foo->$bar)['baz']()
 Foo::$bar['baz']()  // interpreted as (Foo::$bar)['baz']()

如果想改变解释的顺序,可以使用大括号:

${$foo['bar']['baz']}
$foo->{$bar['baz']}
$foo->{$bar['baz']}()
Foo::{$bar['baz']}()

二、global关键字现在只能引用简单变量  

global $$foo->bar;    // 这种写法不支持。
global ${$foo->bar};  // 需用大括号来达到效果。

三、用括号把变量或者函数括起来没有用了

function getArray() { return [1, 2, 3]; }
$last = array_pop(getArray());
// Strict Standards: Only variables should be passed by reference
$last = array_pop((getArray()));
// Strict Standards: Only variables should be passed by reference

注意第二句的调用,是用圆括号包了起来,但还是报这个严格错误。之前版本的PHP是不会报这个错误的。

四、引用赋值时自动创建的数组元素或者对象属性顺序和以前不同了。 

$array = [];
$array["a"] =& $array["b"];
$array["b"] = 1;
var_dump($array);

PHP7产生的数组:["a" => 1, "b" => 1]
PHP5产生的数组:["b" => 1, "a" => 1]

 

PHP 相关文章推荐
教你IIS6的PHP最佳配置方法
Sep 05 PHP
mysql5写入和读出乱码解决
Nov 25 PHP
PHP编实现程动态图像的创建代码
Sep 28 PHP
PHP 第二节 数据类型之字符串类型
Apr 28 PHP
PHP获取当前页面完整URL的实现代码
Jun 10 PHP
PHP中feof()函数实例测试
Aug 23 PHP
PHP生成plist数据的方法
Jun 16 PHP
Symfony2联合查询实现方法
Mar 18 PHP
java微信开发之上传下载多媒体文件
Jun 24 PHP
PHP数据库处理封装类实例
Dec 24 PHP
PHP实现PDO操作mysql存储过程示例
Feb 13 PHP
PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
May 06 PHP
PHP7新特性
Mar 09 #PHP
Yii 实现数据加密和解密
Mar 09 #PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
Mar 09 #PHP
THINKPHP-Apache服务器中使用Alias虚拟目录URL重写 隐藏index.php
Mar 09 #PHP
宝塔面板在NGINX环境中TP5.1如何运行?
Mar 09 #PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
Mar 09 #PHP
Swoole扩展的6种模式深入详解
Mar 04 #PHP
You might like
php递归实现无限分类生成下拉列表的函数
2010/08/08 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
php与mysql建立连接并执行SQL语句的代码
2011/07/04 PHP
PHP CURL 多线程操作代码实例
2015/05/13 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
2017/10/26 PHP
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
javascript模块化是什么及其优缺点介绍
2013/09/02 Javascript
jquery制作LED 时钟特效
2015/02/01 Javascript
浅谈javascript中this在事件中的应用
2015/02/15 Javascript
jQuery Mobile弹出窗、弹出层知识汇总
2016/01/05 Javascript
vue.js入门教程之基础语法小结
2016/09/01 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
Bootstrap table表格初始化表格数据的方法
2018/07/25 Javascript
angularJS实现不同视图同步刷新详解
2018/10/09 Javascript
JS定时器如何实现提交成功提示功能
2020/06/12 Javascript
[47:42]Fnatic vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
纯Python开发的nosql数据库CodernityDB介绍和使用实例
2014/10/23 Python
python使用calendar输出指定年份全年日历的方法
2015/04/04 Python
python中__call__内置函数用法实例
2015/06/04 Python
python实现自动登录人人网并采集信息的方法
2015/06/28 Python
浅谈python中的变量默认是什么类型
2016/09/11 Python
教你使用python画一朵花送女朋友
2018/03/29 Python
Python多图片合并PDF的方法
2019/01/03 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
2019/09/26 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
美国网上眼镜供应商:LEOTONY(眼镜、RX太阳镜和太阳镜)
2017/10/31 全球购物
Room Mate Hotels美国:西班牙酒店品牌
2018/04/10 全球购物
正规的求职信范文分享
2013/12/11 职场文书
酒店个人培训自我鉴定
2013/12/11 职场文书
赡养老人协议书
2014/04/21 职场文书
应收账款管理制度
2015/08/06 职场文书
详解Python魔法方法之描述符类
2021/05/26 Python
JVM钩子函数的使用场景详解
2021/08/23 Java/Android
MySQL RC事务隔离的实现
2022/03/31 MySQL
Vite + React从零开始搭建一个开源组件库
2022/06/25 Javascript