php教程自学网 - 轻松零基础学php视频教程
条幅广告
当前位置: 主页 > PHP7 >

其他语言层面的修改

时间:2018-10-06 16:40来源:未知 作者:admin 点击:
一、在非兼容$this语境中以静态方式调用非静态方法将不再支持。 在非兼容$this语境中以静态方式调用非静态方法将不再支持。在这种场景下面,$this不会被定义,但调用还可以调用,但
一、在非兼容$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来代替。
(责任编辑:admin)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
相关推荐
  • PHP7其他修改
  • NaN和Infinity转为整型的时候,始终为0。 Instead of being undefined and platform-dependent

  • PHP7其他对扩展的修改
  • Mhash不再是一个扩展,使用前需要用function_exists(mhash) 来检查方法是否存在。

  • 其他修改
  • CURL模块:禁止禁用CURLOPT_SAFE_UPLOAD选项,通过curl上传文件必须使用curl_file/CURL

  • 关于PHP7
  • PHP7简介 PHP7是PHP编程语言全新的一个版本,主要在性能方面获得了极大的提升。