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 相关文章推荐
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
Dec 10 PHP
浅析PHP页面局部刷新功能的实现小结
Jun 21 PHP
PHP函数in_array()使用详解
Aug 20 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
Oct 27 PHP
php简单判断文本编码的方法
Jul 30 PHP
PHP编辑器PhpStrom运行缓慢问题
Feb 21 PHP
PHP实现图片批量打包下载功能
Mar 01 PHP
php 查找数组元素提高效率的方法详解
May 05 PHP
利用php + Laravel如何实现部署自动化详解
Oct 11 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 PHP
PHP实现搜索时记住状态的方法示例
May 11 PHP
PHP 加密 Password Hashing API基础知识点
Mar 02 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中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
YII框架页面缓存操作示例
2019/04/29 PHP
php中文语义分析实现方法示例
2019/09/28 PHP
List Installed Hot Fixes
2007/06/12 Javascript
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
js中的异常处理try...catch使用介绍
2013/09/21 Javascript
JavaScript实现继承的4种方法总结
2014/10/16 Javascript
JavaScript window.location对象
2014/11/14 Javascript
jQuery中:focus选择器用法实例
2014/12/30 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
ANGULARJS中使用JQUERY分页控件
2015/09/16 Javascript
javascript正则表达式定义(语法)总结
2016/01/08 Javascript
基于JS实现类似支付宝支付密码输入框
2016/09/02 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
2016/10/28 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
nodejs微信开发之接入指南
2019/03/17 NodeJs
js中!和!!的区别与用法
2020/05/09 Javascript
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中splitlines()方法的使用简介
2015/05/20 Python
Python实现图像几何变换
2015/07/06 Python
python下如何查询CS反恐精英的服务器信息
2017/01/17 Python
python如何在循环引用中管理内存
2018/03/20 Python
浅谈django orm 优化
2018/08/18 Python
python模拟菜刀反弹shell绕过限制【推荐】
2019/06/25 Python
Django如何使用第三方服务发送电子邮件
2019/08/14 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
关于iframe跨域使用postMessage的实现
2019/10/29 HTML / CSS
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
Myprotein葡萄牙官方网站:英国优质运动营养品牌
2016/09/12 全球购物
人力资源专员自我评价怎么写
2013/09/19 职场文书
仓库班组长岗位职责
2013/12/12 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
开展批评与自我批评发言材料
2014/05/15 职场文书
英语专业自荐书
2014/06/13 职场文书
校运会广播稿
2015/08/19 职场文书
小学语文新课改心得体会
2016/01/22 职场文书