次のコードを検討してください。
abstract class ExampleClass
{
public static function regularStaticFunction()
{
return static::abstractStaticFunction();
}
abstract protected static function abstractStaticFunction();
}
ExampleClass::regularStaticFunction();
PhpStorm IDE は、次のような宣言に警告を表示しabstractStaticFunction
ます。
PHP の厳格な基準: 静的関数 'abstractStaticFunction' は抽象化できません。
静的関数は抽象的であってはなりません。
ただし、PHP はこのクラスを解析するときにプログラムの実行を続行し、次のように出力します。
PHP の厳格な標準: 静的関数 ExampleClass::abstractStaticFunction() は、7 行目の php シェル コードで抽象化されるべきではありません
PHP では抽象クラスでの静的関数呼び出しが許可されているため、抽象クラスで抽象静的関数を定義することはできないようです。
なぜ無意味な抽象静的関数がインタプリタによって PHP で許可されているのですか?