这是建立PDO连接的正确方式吗?
我有不同的类(每个类都有自己的文件),然后是配置文件,其中包含PDO对象和所有类对象。我这样做是正确的,或者有更好的做法。
classA.php
class classA {
private $PDO;
function __construct($PDO) {
$this->PDO = $PDO;
}
//other functions
}classB.php
class classB {
private $PDO;
function __construct($PDO) {
$this->PDO = $PDO;
}
//other functions
}classC.php
class classC {
private $PDO;
function __construct($PDO) {
$this->PDO = $PDO;
}
//other functions
}在config.php页面中:
include_once("db.php"); //contains db variables values
try
{
$PDO = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password, $options);
}
catch(PDOException $ex)
{
die("Failed to connect database: " . $ex->getMessage());
}
require 'classA.php';
require 'classB.php';
require 'classC.php';
$objA = new classA($PDO);
$objB = new classB($PDO);
$objC = new classC($PDO);几乎在每个页面上都包含config.php。
发布于 2013-11-01 20:57:18
Short:是的,它是正确的,但并不完美。
我认为你这样做是对的。它被称为Dependency Injection。
但是您的代码有重复项(DRY!)。您可以通过使用继承来避免这种情况。
还有。如果你只想“死”,根本不要捕捉异常。
几乎在每个页面上都包含config.php。
如果你愿意做central point of entry的话会更好。Front contoller pattern。
发布于 2013-11-01 22:09:15
根据你的情况,你的方法是好的。(不是前控制器模式)
避免单例,因为依赖注入是干净的和可维护的。
即使是单例模式的发明者之一Erich Gamma,如今也对这种模式表示怀疑:
"I'm in favor of dropping Singleton. Its use is almost always a design smell"
https://stackoverflow.com/questions/19726373
复制相似问题