gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 18:23:50 25 4
gpt4 key购买 nike

这是我的一般 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com