0

get_class関数が以下の異なる値を返す理由を誰でも説明できますか? 具体的には、基本クラスで呼び出されたときと派生クラスで呼び出されたときに何をすることになっていますか?

abstract class bar {
    public function __construct()
    {
        var_dump(get_class($this)); //prints 'foo'
        var_dump(get_class()); // prints 'bar'
    }
}

class foo extends bar {
}

new foo;
4

1 に答える 1

5

documentationで非常によく説明されているようですが、ここにあります:

get_class($instance)$instanceどこで呼び出しているかに関係なく、インスタンスのクラスを返します。get_class($this)は同じように動作し、 のクラスを返し$thisます。

get_class()それを呼び出すメソッドが定義されているクラスを返すため、定義さbarれている場所であるため、例で返されます__construct()(継承を介して呼び出している場合でも)。

于 2012-09-12T14:42:28.933 に答える