首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为类建立PDO连接的正确方法

为类建立PDO连接的正确方法
EN

Stack Overflow用户
提问于 2013-11-01 20:02:29
回答 2查看 1.1K关注 0票数 4

这是建立PDO连接的正确方式吗?

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

classA.php

代码语言:javascript
复制
class classA {

    private $PDO;

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

classB.php

代码语言:javascript
复制
class classB {

    private $PDO;

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

classC.php

代码语言:javascript
复制
class classC {

    private $PDO;

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

在config.php页面中:

代码语言:javascript
复制
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。

EN

回答 2

Stack Overflow用户

发布于 2013-11-01 20:57:18

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

我认为你这样做是对的。它被称为Dependency Injection

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

还有。如果你只想“死”,根本不要捕捉异常。

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

如果你愿意做central point of entry的话会更好。Front contoller pattern

票数 2
EN

Stack Overflow用户

发布于 2013-11-01 22:09:15

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

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

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

"I'm in favor of dropping Singleton. Its use is almost always a design smell"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19726373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档