如何让子类在PHP中继承MySQL数据库连接
我使用的是PHP5.4.4,我有一个MySQL数据库连接,我想用于父类中的查询,并让所有子类继承该连接。我创建父对象的新实例,并将db连接(如何让子类在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
$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,您可能会发现这很有用: