这是我的常规 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/