从另一个类调用PHP PDO包装类

时间:2013-04-12 14:20:40

标签: php oop class pdo

我打算从这里使用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");
    }
}

任何帮助都将受到高度赞赏。

3 个答案:

答案 0 :(得分:2)

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

class User {

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

}

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

答案 1 :(得分:-1)

这是给你的东西:

检查新的PDO Class Wrapper on GitHub

答案 2 :(得分:-3)

  

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

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

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

老实说,你无法避免以某种方式将$ db传递给函数。没有魔力。无论你选择什么样的时尚方式,你最终都会以这种方式设置你的$ db变量,无论它叫什么,“依赖注入”,“全局”或“使用力量,卢克”。

我投票给global,因为它简单明了。

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