PHP - Улучшение моей модели базы данных? - PullRequest
0 голосов
/ 18 октября 2011

Я администрирую довольно старую систему.На данный момент это кодовый суп, и постепенно я рефакторинг кода.

Что-то, что я заметил при этом, было то, что 90% запросов были CRUD.Нет соединений, ничего больше.Все действительно простые вещи.

В результате я создал класс модели, который охватывает эти типы запросов.Затем я расширяю класс модели для каждой таблицы.

class Model extends MySQLi {
    public function __construct() {
        global $site;
        $mysql = $site['mysql'];
        parent::__construct($mysql['host'], $mysql['user'], $mysql['pass'], $mysql['db']);
    }

Мне не нравится использование global, но оно позволяет мне делать это, не беспокоясь о деталях соединения.

<?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 и, возможно, пропустить его?активное соединение, а не детали соединения для него, чтобы сделать свое собственное соединение?

1 Ответ

4 голосов
/ 18 октября 2011

Не расширяйте Mysqli, просто включите его в вашу модель.

class Model {
    protected $db;

    public function __construct($db) {
        $this->db = $db;   // the mysqli instance.
    }
    .....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...