22

PHPでは、インスタンス内で使用される場合get_called_class()との違いは何ですか?get_class($this)

例:

class A {
    function dump() {
        echo get_called_class();
        echo get_class($this);
    }
}

class B extends A {}

$A = new A();
$B = new B();

$A->dump(); // output is 'AA'
$B->dump(); // output is 'BB'

この場合、違いはありますか?

いつどちらかを使用する必要がありますget_called_class()get_class($this)?

4

5 に答える 5

25

$thisこの場合、 は を使用してクラス名が解決される正しいインスタンスを常に指しているため、違いはありませんget_class()

この関数get_called_class()は、静的メソッドを対象としています。静的メソッドがオーバーライドされると、この関数は、呼び出されている現在のメソッドのコンテキストを提供するクラス名を返します。

于 2013-05-13T06:23:19.353 に答える