我最近从使用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对象?也许这两种解决方案都很糟糕,应该采用更常用的设计?