从父母那里访问子类prop

时间:2012-07-01 22:20:22

标签: php oop

我的意思是这样的:

class parentClass {
    public function method() {
        echo $this->prop;
    }
}
class childClass extends parentClass {
    public $prop = 5;
}

如何从父母道具中获得儿童道具?

...谢谢

3 个答案:

答案 0 :(得分:2)

要么我不完全理解你想要什么,要么解决方案与以下代码一样简单。

class parentClass {
    public function method() {
        echo $this->prop;
    }
}
class childClass extends parentClass {
    public $prop = 5;
}
$object = new childClass();
$object->method();

我的意思是子类正在扩展基类,这意味着它还将继承其父类的所有方法。这使得使用父类方法的整个过程就像从子类的实例中调用它一样简单。

答案 1 :(得分:1)

子类的所有受保护和公共成员都可以在PHP的父类中看到,因此您提供的示例代码应该可以正常工作。 Quote from the php doc

  

声明受保护的成员只能在类中访问   本身以及继承和父类。

但实际问题是:你真的需要吗?

正确的OO方式是定义表达某事物的自包含父类。它不应该需要来访问子类的属性 - 这就是所谓的code smell。如果你真的认为你有一个需要类似构造的情况,你可能正在寻找抽象方法,它保证每个子类具有这个属性:

abstract class Animal {
    public function makeNoise() {
        echo $this->getNoiseString();
    }
    protected abstract function getNoiseString();
}

class Cat extends Animal {
    protected function getNoiseString() {
        return 'meow';
    }
}

答案 2 :(得分:0)

//parent
class parentClass {

    protected $prop = null;

    public function method() {
        echo $this->prop;
    }
}

//child
class childClass extends parentClass {
    protected $prop = 5;
}

确保变量也在父类中定义。所以父母可以访问它。