PHP访问父类变量

标签 php class variables parent

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();

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

最佳答案

echo $this->bb;

变量是继承的,不是私有(private)的,所以是当前对象的一部分。


以下是响应您关于使用 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 principle了开发,但仍然提供您想要的所有功能。

关于PHP访问父类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6456939/

相关文章:

php - 从数据库中删除一行的某些部分(一组数据库行中的一个值)

python - 用python多重继承类实现的好习惯?

c++ - 如何为不同的类声明相同的对象名称?

java - 使用带有变量的配置/属性文件

variables - 检测变量的变化并做出相应的响应 [Lua]

php - Sublime Text 2 到 MySQL 数据库连接不起作用

php - 带有 PHP 和 SQLite 的数据库应用程序在数据库中返回空值

php - 将变量分配给数组值并填充 <td>

c++ - 通过赋值初始化类对象

C++ for 循环字符串比较逻辑存在缺陷