PDO - 扩展与注入

时间:2014-02-11 05:11:25

标签: php pdo mysqli dependency-injection extends

我最近从使用MySQL迁移到了PDO。最初,我有一个类,它是MySQLi对象的包装器,提供了我经常使用的一些基本功能和设置。

我想为PDO做同样的事情。我希望PDO总是抛出异常,我也发现我主要处理关联数组,所以我创建了一个类,通过扩展PDO来保存,不断在多个项目中编写相同的代码:

class noc_pdo extends PDO {

function __construct($dsn, $user, $pass) {
    parent::__construct($dsn, $user, $pass, array(
        PDO::ATTR_PERSISTENT => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}

function returnQueryAsAssociativeArray($query) {
    $stmt = $this->query($query);
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
    $stmt->closeCursor();
    return $result;
}

function returnPreparedStmtAsAssociativeArray($preparedStmt, $parameters) {
    $preparedStmt->execute($parameters);
    $result = $preparedStmt->fetchAll(PDO::FETCH_ASSOC);
    $preparedStmt->closeCursor();
    return $result;
}
}

我可能会继续扩展,因此我宁愿尝试做到这一点(并开始养成良好的习惯),所以在为时已晚,所以我提出的问题是,如果在这种情况下可以接受,或者我应该刚刚让这个类启动PDO对象?也许这两种解决方案都很糟糕,应该采用更常用的设计?

0 个答案:

没有答案