无法从父类访问属性

时间:2015-08-26 23:17:41

标签: php oop properties constructor parent

我唯一想要实现的是能够从类 B 中访问 A 类中的Sql属性,但我的理解必须完全脱离电网。

我试过了:

class A {
    public $Sql; /*object*/

    public function __construct() {
        $this->Sql = new MySQLi("localhost", "user", "password", "database");
    }
}

class B extends A {

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

    public function foo() {
        var_dump($this->Sql); // NULL
        var_dump(parent::Sql); // Error due to Sql not being a constant, can't set an object as a constant.
    }

}

$A = new A();
$B = new B();

但是代码的表现并不像我希望的那样。

希望有人可以指出我在哪里出错了正确的方向。

1 个答案:

答案 0 :(得分:4)

$A = new A();
$B = new B();

上面这两行创建了两个不同的对象,它们之间没有任何关系。

因为你在B类中也有一个父constructor doesn't get called implicit的构造函数,这意味着你必须改变你的代码并从B类的A类中调用构造函数,例如。

public function __construct() {
    parent::__construct();
    $this->foo();
}