質問: AAAA::caller($a, $b, $c); var_dump($rec); ```
回答: その挙動の違いは、パーサーの仕様変更によるものです。 `AAAA::$z[0]()` と書いた場合、これまでのPHPでは `$z[0]` を優先して解釈していました。 1. まず `$z[0]` を評価する 2. その名前の静的メソッドをクラス `AAAA` から探して呼び出す これが PHP7 では左結合、つまり `AAAA::$z` を優先するようになりました。 1. まず `AAAA::$z` を評価する 2. その最初の要素 `[0]` を取り出す 3. その名前の関数を探して呼び出す このため、「静的プロパティ `AAAA::$z` が見つからない」というエラーが出ています。 PHP 5.5.6 での例 PHP 7.1.0-dev での例 `$z[0]` を波括弧で囲んで `AAAA::{$z[0]}()` とすることで、これまでの挙動を再現できます。 詳しくはマニュアルの移行ガイドをご覧ください。 * PHP: PHP 5.6.x から PHP 7.0.x への移行 - Manual * 同、「下位互換性のない変更点」より「変数の取り扱いの変更」