ホームページ > バックエンド開発 > PHPチュートリアル > 厳格な PHP 標準ではメソッド シグネチャのオーバーライドを回避できますか?

厳格な PHP 標準ではメソッド シグネチャのオーバーライドを回避できますか?

Linda Hamilton
リリース: 2024-10-18 06:10:03
オリジナル
250 人が閲覧しました

Can Overriding Method Signatures Be Avoided in Strict PHP Standards?

厳格な標準の回避: メソッド パラメーターのオーバーライド

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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート