其他语言层面变更

1. 移除在$this产生歧义的上下文中,对静态方式调用非静态方法的支持.

以下情景, $this不再被定义, 虽然允许调用但会产生一个deprecation notice错误:

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继承于A, 则允许调用且没有任何提示.

2. 以下保留字不再允许被用作类/接口/trait名称(大小写不敏感):
bool
int
float
string
null
false
true

规则适用于类/接口/trait声明, class_alias() 与 use语句.

并且, 以下类/接口/trait名称被留待未来使用, 当前使用时尚不会抛出错误, 但不建议使用

resource
object
mixed
numeric
3. yield语言结构变更, 现在为右关联运算符, 优先级介于 "print" 与 "=>". 表达式中的yield不再需要圆括号.

变更会导致某些场景下行为与之前不一致:

echo yield -1;
// Was previously interpreted as
echo (yield) - 1;
// And is now interpreted as
echo yield (-1);

yield $foo or die;
// Was previously interpreted as
yield ($foo or die);
// And is now interpreted as
(yield $foo) or die;

以上cases都可以通过添加额外的圆括号来避免歧义.

4. 其他变更
  1. 移除ASP (<%) 与 script (

results matching ""

    No results matching ""