4

PHPの親クラスで子のインスタンスを決定する方法はありますか? このコードがあるとしましょう:

class Parent {
    public function InstanceOfChild() {
        //What to put here to display "Child class is instance of ChildClass123"?
    }
}

class ChildClass123 extends Parent {
   //Some code here
}

私がする必要があるのは(可能であれば)InstanceOfChild()、子クラスのインスタンスを教えてくれるメソッドを作成することです。これは、多くのクラスが親クラスの子になる可能性があるためですが、どの子がどのメソッドを呼び出すかをログに記録したい. 手伝ってくれてありがとう!

4

3 に答える 3

8

get_called_class()あなたがまさに探している機能があります。

class Parent1 {
    public static function whoAmI() {
        return get_called_class();
    }
}

class Child1 extends Parent1 {}

print Child1::whoAmI(); // prints "Child1"
于 2013-08-15T06:58:53.517 に答える
2
class Parent {
    public function InstanceOfChild() {
        $class = get_class($this);
        return $class == 'Parent'? // check if base class
           "This class is not a child": // yes
           "Child class is instance of " . $class; // its child
    }
}

次の呼び出しに注意してください。

$this instanceof Parent

親と子はすべてクラス Parent のインスタンスであるため、常に true を返します。

于 2013-08-15T06:57:09.050 に答える
0

使用できますget_class。したがって、次のコードを設定する必要があります。

echo "Child class is instance of ".get_class($childInstance);

(私はphp開発者ではないので、構文が間違っているかもしれません)

于 2013-08-15T06:55:34.347 に答える