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

如何让子类在PHP中继承MySQL数据库连接,php,mysql,oop,inheritance,Php,Mysql,Oop,Inheritance,我使用的是PHP5.4.4,我有一个MySQL数据库连接,我想用于父类中的查询,并让所有子类继承该连接。我创建父对象的新实例,并将db连接($handler)作为参数传递,db连接成为父对象的属性。当我创建子对象的新实例时 虽然db连接将作为子级的属性继承,但是我只能在将它作为参数传递给子级和父级::构造函数时才能实现这一点。这对我来说似乎是多余的,我想知道我缺少什么,因为我是PHP OOP新手 require "pdo_connect.php"; //mysql db connection

我使用的是PHP5.4.4,我有一个MySQL数据库连接,我想用于父类中的查询,并让所有子类继承该连接。我创建父对象的新实例,并将db连接(
$handler
)作为参数传递,db连接成为父对象的属性。当我创建子对象的新实例时 虽然db连接将作为子级的属性继承,但是我只能在将它作为参数传递给子级和父级::构造函数时才能实现这一点。这对我来说似乎是多余的,我想知道我缺少什么,因为我是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();

因为
$x
$y
完全无关。要了解我的意思,请看以下示例:

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

$z = new newUser($handler);
$z->showdbconn();
由于您已经创建了两个
newUser
实例,因此必须分别为每个实例提供数据库连接


你的例子也是如此。创建新的
social
实例时,必须以与每个新的
newUser
实例需要传递数据库连接相同的方式将数据库连接传递给它。

如果要创建两个单独的对象,一个给父母,一个给孩子,那么你为什么希望他们在这个层次结构中共享这个呢?当您创建一个
social
对象,然后在其中构建
newUser
时,为什么还要创建一个单独的
newUser
呢?这是一个简短的示例。社交对象将从父对象继承方法,我在这里没有显示。@user2232681,您可能会发现这很有用: