- 1 关于PHP7新特性
- 2. PHP7非兼容性改动
- 3 PHP7新增功能
- 4 PHP7SAPI模块修改
- 5 PHP7弃用功能
- 6 PHP7修改的函数
- 7 PHP7新增函数
- 8 PHP7新增类和接口
- 9 PHP7移除的扩展和SAPI
- 10 PHP7其他对扩展的修改
- 11 PHP7新增常量
- 12 PHP7INI配置文件修改
- 13 PHP7windows支持
- 14 PHP7其他修改
其他语言层面的修改
- 2015-11-12 14:37:34
- 开源春哥
- 15562
- 最后编辑:开源春哥 于 2016-05-03 14:23:26
- 分享链接
一、在非兼容$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; // 现在的语法解释行为
可以通过括号来避免歧义。
备注:关于yield,大家可以参考鸟哥的这篇文章: http://www.laruence.com/2012/08/30/2738.html
四、其他的一些调整.
移除了ASP格式的支持和脚本语法的支持:<% 和 <script language=php>
不再支持对 new 的结果进行引用赋值。( 感谢Gazhikaba分享翻译 )
移除了在非兼容$this语境中对非静态方法的作用域调用。参考资料: https://wiki.php.net/rfc/incompat_ctx. http://www.laruence.com/2012/06/14/2628.html
ini文件里面不再支持#开头的注释,使用;。
$HTTP_RAW_POST_DATA 变量被移除,使用php://input来代替。 https://wiki.php.net/rfc/remove_alternative_php_tags
搜了之前的文档。
参考:http://php.net/manual/zh/language.operators.assignment.php