1

我打算从这里使用 PHP PDO 包装类:http ://www.imavex.com/php-pdo-wrapper-class/

我初始化了这个类:
$db = new db("mysql:host=$sitedbHost;port=3306;dbname=$sitedbName", "$sitedbUser", "$sitedbPass");

问题是,我不喜欢global $db在我的其他类的每个函数上做这样的想法:

class User
{
    function getUserDomains($user_id)
    {
        global $db;
        return $db->select("domains");
    }
}

任何帮助将不胜感激。

4

3 回答 3

2

如果你的类需要它才能工作,你可以在构造函数中注入它:

class User {

    public function __construct(Database $db) {
        $this->db = $db;
    }

}

然后,您可以从 访问数据库对象$this->db。(注意,我假设$dbDatabase该类的一个实例。根据需要进行更改)。

于 2013-04-12T14:50:39.367 回答
-1

这是给你的东西:

在 GitHub 上检查新的PDO 类包装器

于 2013-07-04T13:26:07.247 回答
-3

我不喜欢在我的其他类的每个函数上创建全局 $db 的想法

好吧,仅在构造函数中将其设为全局(或将其作为参数传递),然后用作类变量,

return $this->db->select("domains");

老实说,您无法避免以某种方式将 $db 传递给函数。没有魔法。无论您选择哪种时尚方式,您最终都会以这种或其他方式设置您的 $db 变量,无论它如何被称为“依赖注入”、“全局”或“使用原力,卢克”。

我会投赞成票,global因为它简单明了。

顺便说一句,这个框架不灵活且不安全。更好地使用safeMysql,因为它更安全、更灵活

于 2013-04-12T14:47:05.073 回答