4

这是进行 PDO 连接的正确方法吗?

我有不同的类(每个类都有自己的文件)然后有配置文件包含 PDO 对象和所有类对象。我做对了,或者有更好的做法。

类A.php

class classA {

    private $PDO;

    function __construct($PDO) { 
        $this->PDO = $PDO;
    }
    //other functions
}

类B.php

class classB {

    private $PDO;

    function __construct($PDO) { 
        $this->PDO = $PDO;
    }
    //other functions
}

类C.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。

4

2 回答 2

2

Short:是的,它是正确的,但并不完美。

我认为你做得对。它被称为依赖注入

但是您的代码有重复项(DRY!)。您可以通过使用继承来避免它。

还。如果您只想“死”,则根本不要捕获异常。

几乎每个页面都包含 config.php。

如果你做中心入口点会更好。前控制器模式

于 2013-11-01T12:57:18.343 回答
0

根据您的情况,您的方法很好。(不是前端控制器模式)

避免单例,因为依赖注入是干净且可维护的。

即使是单例模式的发明者之一 Erich Gamma,如今也对这种模式表示怀疑:

“我赞成放弃 Singleton。它的使用几乎总是一种设计气味”

于 2013-11-01T14:09:15.447 回答