确定哪个子类正在调用父类的方法

时间:2013-12-12 06:51:12

标签: php

class parent
{
    public function methodInParentClass()
    {
        echo "In parent class called from child class of:";
    }
}

class childOne extends parent
{
    public $childProperty = "in childOne property";
}

class childTwo extends parent
{
    public $childProperty = "in childTwo property";
}

好的,我们有2个子类都扩展了父类。现在,如果我打电话

childTwo->methodInParentClass()

问题:

1)methodInParentClass如何确定调用哪个类?请注意:无法通过变量传递名称。

2)如果#1可以实现,我怎样才能调用孩子的班级财产?我可以实例化一个新类,然后从中调用它,但是不会出现一些性能问题(特别是因为我的项目可能会这样做很多)?

提前致谢!

1 个答案:

答案 0 :(得分:2)

实际上,你的问题没什么意义。让我解释一下:

1)是的,您可以使用父方法调用get_class($this)确定当前类:

 public function methodInParentClass()
 {
     echo "In parent class called from child class of:".get_class($this);
 }

2)(这就是我怀疑这种感觉的原因)。请注意,在调用某个方法时,例如,当您发布$childTwo->methodInParentClass()时,$childTwo是类childTwo的实例 - 您将使用childTwo上下文执行此操作。因此,所有“子”属性都是当前实例的属性,即可通过$this变量访问。