php - 使用先前在其他类中声明的对象

标签 php pdo

这是我的常规 php 页面:

<?php
require_once('includes.php');
require_once('cms.class.php');
.....
rest of the page
?>

includes.php中启动了一个名为$db的pro对象,我想在cms.class.php中指定的类中使用它

包含.php:

$db = new PDO('mysql:host=localhost;dbname=xxxxx','xxxxx','xxxxxx'); 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

如何在我的类中使用此数据库对象,而无需在多个位置存储我的凭据?

最佳答案

需要想要一个依赖管理器或 Bootstrap 或任何您想要的名称。

class Dependency_Manager {

    private $db;

    public function __construct($settings) {
        $this->db = new PDO('mysql:host=localhost;dbname=' . settings["dbname"],settings["username"],$setings["password"]); 
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
        $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    }

    public function getDB() {
        return $db;
    }

}

class CMS {
    public function __construct(PDO $db) {
        /* .. */
    }
}

$setting = array(/* etc */);

$dm = new Dependency_Manager($settings);
$cms = new CMS($dm->getDB());

这种方法的扩展性非常好,可以处理任何依赖性。它还旨在将所有设置放在一个位置,这样您就不会到处都是配置设置。 $dm 是唯一知道这些设置的人,如果您需要根据设置构建某些内容,请将其放入 $dm 中。

关于php - 使用先前在其他类中声明的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10146112/

相关文章:

php - 返回相对于站点根目录而不是服务器根目录的路径

javascript - JQuery 自动完成显示名称并使用 php 和 mysql 维护 id

php - utf8 到 utf8mb4 mysqli 字符集 php

javascript - 创建特定格式的 JSON 数据

PHP MySQL导入上传的csv错误

php - $_Session[variable] 放在代码中的什么位置

PHP AJAX mysql 事件日历 - 跨越多天的事件的 UI

php - 更新了查询,显示 PDO 中的旧数据

php - MYSQL在不同情况下给出相同的响应 '0 rows affected'

php - 正确 MySql 查询的 PDO 异常