PHP访问父类变量

新手上路,请多包涵
class A {
    private $aa;
    protected $bb = 'parent bb';

    function __construct($arg) {
       //do something..
    }

    private function parentmethod($arg2) {
       //do something..
    }
}

class B extends A {
    function __construct($arg) {
        parent::__construct($arg);
    }
    function childfunction() {
        echo parent::$bb; //Fatal error: Undefined class constant 'bb'
    }
}

$test = new B($some);
$test->childfunction();

问题:如何在孩子中显示父变量?预期结果将回显“父 bb”

原文由 Kuntau 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 485
2 个回答
echo $this->bb;

该变量是继承的并且不是私有的,因此它是当前对象的一部分。


以下是响应您关于使用 parent:: 的更多信息请求的附加信息:

当您想为父类中的方法 添加 额外功能时,请使用 parent:: 。例如,想象一个 Airplane 类:

 class Airplane {
    private $pilot;

    public function __construct( $pilot ) {
        $this->pilot = $pilot;
    }
}

现在假设我们要创建一种新类型的飞机,它也有一个导航器。您可以扩展 __construct() 方法以添加新功能,但仍使用父级提供的功能:

 class Bomber extends Airplane {
    private $navigator;

    public function __construct( $pilot, $navigator ) {
        $this->navigator = $navigator;

        parent::__construct( $pilot ); // Assigns $pilot to $this->pilot
    }
}

这样,您可以遵循 DRY 开发原则,但仍然提供您想要的所有功能。

原文由 George Cummins 发布,翻译遵循 CC BY-SA 3.0 许可协议

class A {
    private $aa;
    protected $bb = 'parent bb';

    function __construct($arg) {
       //do something..
    }

    private function parentmethod($arg2) {
       //do something..
    }
}

class B extends A {
    function __construct($arg) {
        parent::__construct($arg);
    }
    function childfunction() {
        echo parent::$this->bb; //works by M
    }
}

$test = new B($some);
$test->childfunction();`

原文由 user2147836 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题