問題タブ [arrayaccess]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP 5.6: ArrayAccess: 関数 isset が offsetGet を呼び出し、未定義のインデックス通知が発生する
ArrayAccess インターフェイスを実装する単純な PHP クラスを作成しました。
PHP 7 では正常に動作しますが、PHP 5.6 と HHVM で問題が発生します。
isset()
未定義のインデックスで関数を呼び出すと、通知offsetGet()
の代わりにPHP が呼び出します。offsetExists()
Undefined index
PHP 7 では、が返されたoffsetGet()
場合にのみ呼び出されるため、エラーは発生しません。offsetExists()
true
これはPHP バグ 62059に関連していると思います。
コードは 3V4L で使用できるため、何が問題なのかがわかります。3V4L では通知が表示されないため、インデックスが定義されていない場合はデバッグ呼び出しをいくつか追加し、例外をスローします: https://3v4l.org/7C2Fs
そうしないと、PHPUnit テストが失敗します。このエラーを修正するにはどうすればよいですか?