我使用 PHP 开发 Web 应用程序。我有很多使用数据库连接的类。
这是我通常使用的结构;
class SomeClass {
private $db;
function __construct(mysqli $db) {
$this->db = $db;
}
function SomeFunction() {
$this->db->query(...);
}
}
这就是我想用的;
class Common {
public static DB = new mysqli(...);
}
class SomeClass {
function SomeFunction() {
Common::DB->query(...);
}
}
我的问题有两个部分;
哪一个是更好的实践?如果我使用第一个,我必须将数据库对象传递给每个使用 db 的类。如果我使用第二个,每个使用 db 的类都将依赖于 Common 类。
我使示例更简单。实际上我有一个数据库类扩展了 mysqli 和一个使用数据库类的 DatabaseTableManager 类。我将 GetTable() 函数添加到数据库类。我在这个函数 () 中创建了 DatabaseTableManager 对象,
return new DatabaseTableManager($this, $tableNameFromArgument)
因此我不必每次都传递 db 对象。在 DatabaseTableManager 类中,我构建了一些查询以使我的工作更轻松。
例如向表中插入一条记录;
$DB = new Database(...);
$myTable = $DB->GetTable('myActualTableNameInDatabase');
$myTable->Insert( array('col1' => 'val1', 'col2' => 'val2') );
所以我在其他课程中经常使用这个课程。自然地,所有这些类都依赖于 DatabaseTableManager 类。更好的解决方案是什么?