我的意思是这样的:
class parentClass {
public function method() {
echo $this->prop;
}
}
class childClass extends parentClass {
public $prop = 5;
}
如何从父道具中获取子道具?
谢谢...
要么我不完全理解你想要什么,要么解决方案就像下面的代码一样简单。
class parentClass {
public function method() {
echo $this->prop;
}
}
class childClass extends parentClass {
public $prop = 5;
}
$object = new childClass();
$object->method();
我的意思是子类正在扩展基类,这意味着它还将继承其父类的所有方法。这使得使用父类方法的整个过程就像从子类的实例中调用它一样简单。
子类的所有受保护成员和公共成员在 PHP 的父类中都是可见的,因此您提供的示例代码应该可以正常工作。引用 php 文档:
声明为受保护的成员只能在类本身内以及被继承类和父类访问。
但实际的问题是:你真的需要它吗?
正确的 OO 方法是定义一个自包含的父类来表达一些东西。它不应该需要访问子类的属性——这就是所谓的代码异味。如果你真的认为你有一个类似的构造是必要的情况,你可能正在寻找抽象方法,它保证每个子类都有这个属性:
abstract class Animal {
public function makeNoise() {
echo $this->getNoiseString();
}
protected abstract function getNoiseString();
}
class Cat extends Animal {
protected function getNoiseString() {
return 'meow';
}
}
//parent
class parentClass {
protected $prop = null;
public function method() {
echo $this->prop;
}
}
//child
class childClass extends parentClass {
protected $prop = 5;
}
确保变量也在父类中定义。所以它可以被父母访问。