その他の言語レベルの変更


1. 互換性のない $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

この状況は、互換性のないコンテキストでの呼び出しに適用されることに注意してください。上記のコード例では、クラス B とクラス A には関係がないため、呼び出されたときに $this は定義されません。

ただし、クラス B がクラス A から継承している場合、その呼び出しは正当です。

2. 以下の予約語はクラス名、インターフェース名、トレイト名として使用できません。

bool
int
float
string
null
false
true
次のキーワードは将来の使用のために予約されており、現在はエラーなく使用できますが、推奨されません。
resourceobject
mixed
numeric

3. Yield 構文の調整

式で yield 構文構造を使用する場合、括弧は必要なくなりました。これは、「print」演算子と「=>」演算子の間で優先される右結合演算子になりました。一部のシナリオでは、動作が以前と一致しなくなります。

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

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

括弧を使用すると曖昧さを避けることができます。

注: 収量については、Brother Bird の記事を参照してください: http://www.laruence.com/2012/08/30/2738.html

4. その他 いくつか

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