代码之家  ›  专栏  ›  技术社区  ›  zanderwar

无法从父类访问属性

  •  2
  • zanderwar  · 技术社区  · 9 年前

    我唯一要做的就是能够访问 Sql 类中的属性 A. 来自班级 B ,但我的理解必须完全脱离现实。

    我尝试了:

    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 回复  |  直到 9 年前
        1
  •  4
  •   Rizier123 tarnfeld    9 年前
    $A = new A();
    $B = new B();
    

    上面的两条线创建了两个不同的对象,它们彼此没有任何关系。

    因此,由于类B中也有构造函数 constructor doesn't get called implicit ,表示您必须更改代码并从类B中的类A调用构造函数,例如。

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