我现在正在使用 PDO,并且我有很多课程。每次我使用一个类时,我并不总是使用它与数据库相关的功能。有时我会一直使用一个类,直到最后我可能会对数据库做一些工作,比如将此对象保存到 DB。
所以我目前正在做这样的事情:
class Something
{
protected $pdo;
function connect()
{
$this->pdo = new PDO( "mysql:host=".zConfig::read('hostname').";dbname=".zConfig::read('database'), zConfig::read('username'), zConfig::read('password'));
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
/* lots of functions doing lots of non-DB things */
function saveToDB()
{ $this->connect();
$this->pdo->prepare("Some SQL that saves some stuff");
// now do some DB-related pdo work
}
}
我的问题是——这合理吗?这是你们很多人编码的方式吗?
在我看来,有 3 个选项:
- 我这样做的方式 - 仅在与数据库相关的那些函数中连接到数据库。但这意味着每次我运行与数据库相关的功能时。
- 在构造函数中打开一个连接,在这种情况下我只打开一次,但即使我不需要它也会打开它,所以我觉得有时我会无缘无故地创建连接。
另一方面,我可以使用这样的单例数据库类:
我在一个页面上最多有三个相关对象,有时我会这样做,有时我不需要在一个页面上多次连接到数据库。哪种设计更安全?