厳格な標準の回避: メソッド パラメーターのオーバーライド
PHP では、コードの信頼性を確保するために、厳格な標準によって事前定義されたコーディング ルールの遵守が強制されます。そのような標準の 1 つは、メソッド パラメーターのオーバーライドを禁止しています。次のコードを考えてみましょう。
<code class="php">class Foo { public function bar(array $bar) {} } class Baz extends Foo { public function bar($bar) {} }</code>
ここで、Baz のオーバーライド メソッド (単一パラメータを持つ) は、Foo の元のメソッド (配列を引数として受け取る) とはシグネチャが異なります。その結果、PHP は厳格な標準警告をトリガーします。
この違反は、サブタイプ (Baz) がそのスーパータイプ (Foo) を変更せずにシームレスに置き換えることができるという OOP 設計ルールであるリスコフ置換原則 (LSP) に起因します。プログラムの動作。強い型付けの言語では、サブタイプ内のメソッド シグネチャを変更するとメソッドのオーバーロードが作成されますが、弱い型付けの PHP ではそのような区別は不可能です。
LSP 準拠を確保し、メソッドの動作の変更を避けるために、厳格な標準によりメソッドの変更が禁止されています。オーバーライドメソッドのシグネチャ。この警告は、親クラス メソッドと子クラス メソッド間の一貫性を維持するためのリマインダーとして機能し、メソッド呼び出し中のメソッド シグネチャの不一致による潜在的なバグを防ぎます。
以上が厳格な PHP 標準ではメソッド シグネチャのオーバーライドを回避できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。