在数据库类中创建查询函数(必须使用单例模式创建)是一个好习惯吗?或者更好地创建另一个带有数据库接口的类,或类似的东西,并在构造函数中获取数据库实例?(对不起我的英语不好 :)
<?php
class Database
{
private static $_pdo = null;
private static function getDatabase() {
if (self::$_pdo === null) {
self::$_pdo = new PDO("mysql:host=localhost;dbname=contact_manager", 'root', '');
}
return self::$_pdo;
}
public static function query($query, $parameters) {
Database::_toArray($parameters);
$query = self::getDatabase()->prepare($query);
$query->execute($parameters);
$result = $query->fetchAll(PDO::FETCH_ASSOC);
return $result;
}
private static function _toArray(&$parameters) {
if (!is_array($parameters)) {
$parameters = array($parameters);
}
}
private function __construct() { }
private function __clone() { }
private function __wakeup() { }
}
?>
Run Code Online (Sandbox Code Playgroud)
这是一个非常广泛的主题,是否是好的做法。对于我来说,可能有一些观点。
如果您不打算使用另一个数据库扩展您的项目,则应通过相同的接口调用查询 - 这个解决方案是可以的
如果我们从 SOLID 的角度来看,这是一个错误的决定。根据 SOLID,您必须将数据库连接与查询分开。这是因为 D 原则(依赖倒置)+ S 原则(单一责任)。此外,您还必须定义自己的DatabaseInterface连接,用于将连接Repositories注入到封装数据库查询的类中。
但是,此决定还取决于您的项目规模和目标。如果你只是想让一切都正确,而不是发明自己的全新自行车,只需使用像 Symfony 或 Laravel 这样的框架,然后忘记这些低级的东西。
| 归档时间: |
|
| 查看次数: |
1336 次 |
| 最近记录: |