如何在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
不是你想象的那样。做吧,别再和我争论了;-)不客气。你试过使用它吗?您可能会发现它不是一个对象,而是一个字符串或整数。