ホームページ  >  記事  >  バックエンド開発  >  PHP 5.2 では抽象静的クラス メソッドが許可されないのはなぜですか?

PHP 5.2 では抽象静的クラス メソッドが許可されないのはなぜですか?

DDD
DDDオリジナル
2024-11-16 07:54:03868ブラウズ

Why Are Abstract Static Class Methods Not Allowed in PHP 5.2 ?

PHP 5.2 では、抽象静的クラス メソッドが許可されないのはなぜですか?

当初は厳密な警告なしでコーディングされていましたが、プロジェクトでは、警告を有効にすると多数の警告がトリガーされるようになりました。その中には、抽象親クラス Program 内の抽象静的関数に関する警告もあります。ドキュメントによると、抽象静的関数は PHP 5.0.x および 5.1.x では意図せず許可されていましたが、現在は許可されていません。

なぜ抽象静的関数が存在しない必要があるのですか?

PHP 5.2 には後期静的関数がありませんでした。バインディング。PHP 5.3 で利用可能になりました。この機能により、親クラスのメソッドが子クラスの静的メソッドを呼び出すことができます。これがなければ、親クラスが子クラスの静的メソッドを呼び出すことができないため、PHP 5.2 の抽象静的メソッドは効果がありませんでした。

物語は続く

後期静的バインディングの導入により、抽象静的メソッドは関連性を取り戻しました。 。それにもかかわらず、警告は引き続き表示されます。抽象静的メソッドは抽象クラスで壊れたパブリック メソッドを公開することにつながる可能性があると主張することもできますが、この議論は弱いと考えられています。

バグ レポート 53081 の奇妙なケース

PHP バグ レポート 53081 がリクエストされました警告の削除。このレポートは当初偽りとして却下されましたが、後に PHP の作成者である Rasmus Lerdorf の誤解により偽りとして閉鎖されました。

PHP 7 での解決策

この警告は PHP 7 で削除されます。 Nikita Popov の PHP RFC: Reclassify E_STRICT 通知に感謝します。この健全性への移行により、開発者は PHP 5.2 で発生した誤った警告に遭遇することなく、抽象静的メソッドを利用できるようになります。

以上がPHP 5.2 では抽象静的クラス メソッドが許可されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。