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

标签 php mysql pdo connection

<分区>

这是建立 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。

最佳答案

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

我认为你做得对。它叫做Dependency Injection .

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

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

include config.php on almost every page.

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

关于php - 为类建立 PDO 连接的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19726373/

相关文章:

php - Vicidial 的 MySQL 过滤器

php - 如何将印地语文本保存为 JSON

php - codeIgniter 分页 - 不会转到搜索结果的下一个链接

php - 从 PHP Web 表单中的选项选择插入外键

php - 我如何配置 Msmtp 以使用 gmail SMTP

php - 筛选产品 价格并排序 升序 描述 PHP MYSQLI

php - PHP中特定计数的非重复组合

php - 设置然后按案例选择订单

PHP PDO 基本准备语句

php - PDO::FETCH_OBJECT 错误