0

我有以下代码

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

当我使用这种方式时,它会给出错误Fatal error: Call to a member function query() on a non-object in

4

2 回答 2

0

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

于 2012-12-25T12:37:03.507 回答
0

那是因为$db没有query()方法。实际上是$this->db设置和具有query()方法的对象吗?

做一些调试:

var_dump($this->db);
于 2012-12-25T10:39:02.470 回答