我正在使用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();
答案 0 :(得分:1)
因为$x
与$y
完全无关。要明白我的意思,请看这个例子:
$x = new newUser($handler);
$x->showdbconn();
$z = new newUser($handler);
$z->showdbconn();
由于您创建了两个实例 newUser
,因此您必须分别为每个实例提供数据库连接。
在您的示例中也是如此。当您创建新的social
实例时,必须将数据库连接传递给它,就像每个新newUser
实例需要传递数据库连接一样。< / p>