当初は厳密な警告なしでコーディングされていましたが、プロジェクトでは、警告を有効にすると多数の警告がトリガーされるようになりました。その中には、抽象親クラス Program 内の抽象静的関数に関する警告もあります。ドキュメントによると、抽象静的関数は PHP 5.0.x および 5.1.x では意図せず許可されていましたが、現在は許可されていません。
PHP 5.2 には後期静的関数がありませんでした。バインディング。PHP 5.3 で利用可能になりました。この機能により、親クラスのメソッドが子クラスの静的メソッドを呼び出すことができます。これがなければ、親クラスが子クラスの静的メソッドを呼び出すことができないため、PHP 5.2 の抽象静的メソッドは効果がありませんでした。
後期静的バインディングの導入により、抽象静的メソッドは関連性を取り戻しました。 。それにもかかわらず、警告は引き続き表示されます。抽象静的メソッドは抽象クラスで壊れたパブリック メソッドを公開することにつながる可能性があると主張することもできますが、この議論は弱いと考えられています。
PHP バグ レポート 53081 がリクエストされました警告の削除。このレポートは当初偽りとして却下されましたが、後に PHP の作成者である Rasmus Lerdorf の誤解により偽りとして閉鎖されました。
この警告は PHP 7 で削除されます。 Nikita Popov の PHP RFC: Reclassify E_STRICT 通知に感謝します。この健全性への移行により、開発者は PHP 5.2 で発生した誤った警告に遭遇することなく、抽象静的メソッドを利用できるようになります。
以上がPHP 5.2 では抽象静的クラス メソッドが許可されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。