如何在php中使用父类的数据库对象

如何在php中使用父类的数据库对象,php,inheritance,Php,Inheritance,我有以下代码 class Application { protected $db; public function getDBChange(database $db) { $this->db =& $db; $this->update($db); } protected function update($db) { $this->db=&

我有以下代码

class Application
{
    protected $db;
    public function getDBChange(database $db)
        {
            $this->db =& $db;
                $this->update($db);
        }
protected function update($db)
    {
        $this->db=& $db;
        echo "\nServer - update- IN";
        $SQL = "UPDATE `version` SET app_ver='1.0.6'";

        if (!$this->db->query($SQL))
        {
            echo "\nDatabase Error.";
        }
        echo "\nServer - update- OUT";
    }
}
它工作正常,但当我从一个子类调用这个更新函数时,它给出了错误的子类,如下所示

class DemoApplication extends Application
{
    callParent()
    {
        $this->update($this->db);
    }
}

当我使用这种方法时,它会给出错误
致命错误:对

中的非对象调用成员函数query(),这是因为
$db
没有
query()
方法。
$this->db
是否实际设置了一个具有
query()
方法的对象

进行一些调试:

var_dump($this->db);

为什么要将
$this->db
传递给同一
$this
上下文中的方法?为什么不在子类中设置
$this->db
,然后调用
$this->update
?因为它们都是在父类中定义的,所以这样做应该没有问题。至于错误本身:您尝试使用外部变量的地址分配设置私有成员,因此,以后可以通过希望私有成员地址指向的变量访问对象的私有成员。

数据库$db
工作正常?感谢您尝试了回复,但不起作用如果db没有查询方法,那么它如何从父类成功执行我只是重新表述了错误。就像我说的,试着调试
$db
值,你会发现它实际上没有
query()
方法。它在同一个类中正常工作,但当我从子类调用时,它会给出错误,所以对$db或query()是毫无疑问,所以开始调试它,因为
$db
不是你想象的那样。做吧,别再和我争论了;-)不客气。你试过使用它吗?您可能会发现它不是一个对象,而是一个字符串或整数。