如何让子类继承PHP中的MySQL数据库连接

时间:2014-08-27 17:42:23

标签: php mysql oop inheritance

我正在使用PHP 5.4.4并且我有一个MySQL数据库连接,我想用于父类中的查询,并且所有子节点都继承了该连接。我创建父实例的新实例并将db连接($handler)作为参数传递,db连接成为父连接的属性。当我创建一个孩子的新实例时 我认为db连接将作为子属性继承,但是当我传递它时,我只能将它发生在child和parent :: constructor函数的参数上。这对我来说似乎是多余的,我想知道自从我不熟悉PHP OOP后我缺少了什么。

require "pdo_connect.php"; //mysql db connection

class newUser {
    public $timestamp;
    public $dbconn;

    public function __construct($handler) { 
        $this->timestamp = time();
        $this->dbconn = $handler;
    }

    public function showdbconn() {
        //use $this->dbconn for mysql query
        print_r($this->dbconn);
    }
}

class social extends newUser {

    public function __construct($handler) {
        $this->message = 'message';
        parent::__construct($handler);
    }

    public function test() {
        //use $this->dbconn for mysql query
        print_r($this->dbconn);
    }
}

$x = new newUser($handler);
$x->showdbconn();  

$y = new social($handler); //why pass to child if passed to parent?
$y->test();

1 个答案:

答案 0 :(得分:1)

因为$x$y完全无关。要明白我的意思,请看这个例子:

$x = new newUser($handler);
$x->showdbconn();  

$z = new newUser($handler);
$z->showdbconn();

由于您创建了两个实例 newUser,因此您必须分别为每个实例提供数据库连接。

在您的示例中也是如此。当您创建新的social实例时,必须将数据库连接传递给它,就像每个newUser实例需要传递数据库连接一样。< / p>