什么是更好的做法?要传递数据库还是打开数据库?当我将数据库传递给构造函数时,我无法执行自动完成(NetBeans PHP IDE)。
class Item {
private $name;
private $database;
public function __construct($database, $id) {
$information = $database->fetchSingleRow($id);
$this->database = $database;
$this->name = $information['name'];
}
}
我应该这样做吗
class Item {
private $name;
private $database;
public function __construct($id) {
$this->database = new Database();
$this->database->open();
$this->database->select('test'); // selects test table
$information = $this->$database->fetchSingleRow($id);
$this->name = $information['name'];
}
public function __destruct() {
unset($this->item);
$this->database->close();
}
}
答案 0 :(得分:1)
有几件事:
public function toto(DataBaseClass $MyDB,array $params){...}
答案 1 :(得分:1)
我个人将它作为构造函数中的参数传递。如果您有许多Item实例,则每次都会创建一个新连接,这会使您的数据库感到紧张。
答案 2 :(得分:0)
已经涵盖了每次你攻击一个项目时创建一个新的数据库实例将成为数据库的压力,但我还想指出它确实不是一个好的设计决策。
这里的主要问题是你没有遵循设计的“原则”。如果您要让Item创建一个新的Database对象,那么如果您想要更改有关如何创建/打开数据库等的任何内容,您将遇到问题。您必须在创建新数据库实例的代码库中的任何位置进行更改。因此,没有做好改变的准备。