6

クラスとオブジェクトのセクションで拡張について説明しているPHPの公式ドキュメントには、次のように書かれています。

"When overriding methods, the parameter signature should remain the same or PHP
will generate an E_STRICT level error. This does not apply to the constructor
which allows overriding with different parameters."

知りたいのですが、パラメーター署名とは何ですか?

ドキュメント内の例は次のとおりです。

<?php
class ExtendClass extends SimpleClass
{
    // Redefine the parent method
    function displayVar()
    {
        echo "Extending class\n";
        parent::displayVar();
    }
}

$extended = new ExtendClass();
$extended->displayVar();
?> 

公式オンラインリンク

4

1 に答える 1

8

パラメーター シグネチャは、メソッドの定義 (シグネチャ) におけるパラメーターの定義です。引用されたテキストが意味することは、親クラスのメソッドをオーバーライドするときに、同じ数 (および PHP では適用されない型) のパラメーターを使用することです。関数/メソッドのシグネチャはhead
とも呼ばれます。名前とパラメータが含まれています。関数の実際のコードはbodyと呼ばれます。

function foo($arg1, $arg2) // signature
{
    // body
}

たとえばfoo($arg1, $arg2)、親クラスにメソッドがある場合、メソッドを定義して拡張クラスでオーバーライドすることはできませんfoo($arg)

于 2013-04-25T16:24:18.597 に答える