PHP7 其他语言层面的修改


Posted in PHP onMarch 09, 2021

一、在非兼容$this语境中以静态方式调用非静态方法将不再支持。

在非兼容$this语境中以静态方式调用非静态方法将不再支持。在这种场景下面,$this不会被定义,但调用还可以调用,但会有一个警告提示:

class A {
  public function test() { var_dump($this); }
}

// Note: Does NOT extend A
class B {
  public function callNonStaticMethodOfA() { A::test(); }
}

(new B)->callNonStaticMethodOfA();

// Deprecated: Non-static method A::test() should not be called statically
// Notice: Undefined variable $this
NULL

注意这种情况适用于在非兼容语境中调用。上面代码的例子中class B和class A没有关系,所以调用的时候$this是没有定义的。

但如果class B是从class A继承的话,该调用是合法的。

 

二、下面的这些保留字不能用作类名、接口名和trait名。

bool
int
float
string
null
false
true

下面这些关键字已经被留作将来使用,目前可以使用,不会报错,但不建议。

resourceobject
mixed
numeric

 

三、yield语法调整

在表达式里面使用yield语法结构的时候,不再需要括号了。它现在是一个右关联的操作符,优先级介于"print"和"=>"操作符。在某些场景下面行为和之前会不一致。

echo yield -1;
echo (yield) - 1;  // 之前的语法解释行为
echo yield (-1);   // 现在的语法解释行为

yield $foo or die;
yield ($foo or die);  // 之前的语法解释行为
(yield $foo) or die;  // 现在的语法解释行为

可以通过括号来避免歧义。

 

四、其他的一些调整. 

移除了ASP格式的支持和脚本语法的支持:<% 和 <script language=php>

不再支持对 new 的结果进行引用赋值。

移除了在非兼容$this语境中对非静态方法的作用域调用。

ini文件里面不再支持#开头的注释,使用;。

$HTTP_RAW_POST_DATA 变量被移除,使用php://input来代替。

PHP 相关文章推荐
我的论坛源代码(二)
Oct 09 PHP
php 表单验证实现代码
Mar 10 PHP
检查php文件中是否含有bom的函数
May 31 PHP
php include和require的区别深入解析
Jun 17 PHP
php检查日期函数checkdate用法实例
Mar 19 PHP
PHP调用.NET的WebService 简单实例
Mar 27 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
Dec 10 PHP
PHP读取文件内容的五种方式
Dec 28 PHP
PHP静态成员变量和非静态成员变量详解
Feb 14 PHP
PHP网站自动化配置的实现方法(必看)
May 27 PHP
YII框架模块化处理操作示例
Apr 26 PHP
基于PHP实现堆排序原理及实例详解
Jun 19 PHP
PHP7 错误处理机制修改
Mar 09 #PHP
PHP7 字符串处理机制修改
Mar 09 #PHP
PHP7 整型处理机制修改
Mar 09 #PHP
PHP7 参数处理机制修改
Mar 09 #PHP
PHP7 foreach() 函数修改
Mar 09 #PHP
PHP7 list() 函数修改
Mar 09 #PHP
PHP7变量处理机制修改
Mar 09 #PHP
You might like
phpBB BBcode处理的漏洞
2006/10/09 PHP
类的另类用法--数据的封装
2006/10/09 PHP
基于mysql的bbs设计(二)
2006/10/09 PHP
Window下PHP三种运行方式图文详解
2013/06/11 PHP
PHP实现的浏览器检查类
2016/04/11 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
PHP addcslashes()函数讲解
2019/02/03 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
JS实现div内部的文字或图片自动循环滚动代码
2013/04/19 Javascript
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
jquery实现简洁文件上传表单样式
2015/11/02 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
JavaScript中误用/g导致的正则test()无法正确重复执行的解决方案
2016/07/27 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
深入理解vue-router之keep-alive
2017/08/31 Javascript
微信小程序云开发修改云数据库中的数据方法
2019/05/18 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
[01:14]DOTA2亚洲邀请赛小组赛赛前花絮
2017/03/27 DOTA
[00:47]DOTA2荣耀之路6:玩不了啦!
2018/05/30 DOTA
[43:14]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
[01:01:41]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第二场 1月31日
2021/03/11 DOTA
python与php实现分割文件代码
2017/03/06 Python
python opencv判断图像是否为空的实例
2019/01/26 Python
python3+PyQt5 数据库编程--增删改实例
2019/06/17 Python
使用Python轻松完成垃圾分类(基于图像识别)
2019/07/09 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
详解Pandas 处理缺失值指令大全
2020/07/30 Python
俄罗斯在线服装店:STOLNIK
2021/03/07 全球购物
法学院方阵解说词
2014/01/29 职场文书
市级文明单位申报材料
2014/05/07 职场文书
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle