我正在管理一个相当陈旧的系统。这是一个代码汤,我一点一点地重构代码。
我这样做时注意到的是90%的查询都是CRUD。没有加入,没有别的。一切都很简单。
结果我创建了一个模型类,它涵盖了这些类型的查询。然后,我为每个表扩展模型类。
class Model extends MySQLi {
public function __construct() {
global $site;
$mysql = $site['mysql'];
parent::__construct($mysql['host'], $mysql['user'], $mysql['pass'], $mysql['db']);
}
我不喜欢使用全局,但它确实允许我这样做,而不必担心连接细节。
<?php
class Contact extends Model {
public $table = 'contact';
}
$Contact = new Contact;
$Contact->get(array('where'=>array('id >' => 4), 'limit' => array(0, 20));
我担心的是,如果一个脚本需要3个表。我将使用3个模型,因此肯定这意味着我将有3个独立的数据库连接?每个班级一个?
这是否会像我认为的那样成为一个问题?
是否有一项工作可以让我继续扩展MySQLi并可能将其传递给活动连接而不是连接详细信息以便建立自己的连接?
答案 0 :(得分:4)
不要扩展Mysqli,只需在模型中包含它。
class Model {
protected $db;
public function __construct($db) {
$this->db = $db; // the mysqli instance.
}
.....
}