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 相关文章推荐
PHP中for循环语句的几种变型
Nov 26 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
Jun 26 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
Oct 22 PHP
php分页函数示例代码分享
Feb 24 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
Apr 21 PHP
PHP生成等比缩略图类和自定义函数分享
Jun 25 PHP
PHP获取POST数据的几种方法汇总
Mar 03 PHP
PHP嵌套输出缓冲代码实例
May 12 PHP
Smarty模板引擎缓存机制详解
May 23 PHP
php制作基于xml的RSS订阅源功能示例
Feb 08 PHP
PHP反射机制原理与用法详解
Feb 15 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
Sep 04 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
PHP 代码规范小结
2012/03/08 PHP
PHP中::、-&amp;gt;、self、$this几种操作符的区别介绍
2013/04/24 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
PHP中使用OpenSSL生成证书及加密解密
2017/02/05 PHP
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
jQuery实现指定内容滚动同时左侧或其它地方不滚动的方法
2015/08/08 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
jQuery技巧之让任何组件都支持类似DOM的事件管理
2016/04/05 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
2016/05/16 Javascript
微信小程序  modal详解及实例代码
2016/11/09 Javascript
浅析JavaScript中break、continue和return的区别
2016/11/30 Javascript
JavaScript原生编写《飞机大战坦克》游戏完整实例
2017/01/04 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
2017/02/13 Javascript
详解Vue中状态管理Vuex
2017/05/11 Javascript
BootStrap Table 后台数据绑定、特殊列处理、排序功能
2017/05/27 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
Layer.js实现表格溢出内容省略号显示,悬停显示全部的方法
2019/09/16 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
深入理解redux之compose的具体应用
2020/01/12 Javascript
[44:15]国士无双DOTA2 6.82版本详解(上)
2014/09/28 DOTA
Python pandas常用函数详解
2018/02/07 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
python递归实现快速排序
2018/08/18 Python
Windows系统下PhantomJS的安装和基本用法
2018/10/21 Python
Python异常继承关系和自定义异常实现代码实例
2020/02/20 Python
keras topN显示,自编写代码案例
2020/07/03 Python
python利用paramiko实现交换机巡检的示例
2020/09/22 Python
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
汽车技术服务英文求职信范文
2014/01/02 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
幼儿园小班教师个人工作总结
2015/02/06 职场文书
python自动统计zabbix系统监控覆盖率的示例代码
2021/04/03 Python
JavaScript使用canvas绘制坐标和线
2021/04/28 Javascript
Python 读写 Matlab Mat 格式数据的操作
2021/05/19 Python