我正在管理一个相当旧的系统。它现在是一个代码汤,我一点一点地重构代码。
当我这样做的时候,我注意到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,也许通过它一个活动的连接,而不是连接的详细信息,使它自己的连接?
不要扩展Mysqli,只把它包含在你的模型中。
class Model {
protected $db;
public function __construct($db) {
$this->db = $db; // the mysqli instance.
}
.....
}