Вопросы/предложения о шаблоне класса базы данных PHP

Я разрабатываю свою собственную модель класса для моей базы данных, и я хотел бы знать то, что Вы парни думают о ней.

Для каждой таблицы в моей базе данных у меня есть 2 класса. Первый, выбирающий класс (я не знаю, как назвать его..), этот класс имеет некоторые статические методы, взаимодействующие с базой данных (fetchAll, fetchById и т.д.). Второй класс является самой моделью, это содержит все методы для строки таблицы (вставьте, обновите, удалите, проверьте или любая другая обработка на строке).

Каждый выбирающий класс возвращает объект модели, если это будет fetchAll, например, то метод возвратит массив модели, и если это будет fetchById, то метод возвратит только 1 объект, так как идентификатор уникален.

Пример того, как я использовал бы его:

$users = Users_Map::fetchAll();

foreach($users as $user)
{
    echo $user->username.'<br/>';
}

$user = new User_Model();
$user->username = 'example';
$user->insert();

$user = User_Map::fetchById(1);
$user->username = 'example2';
$user->update();

Если у Вас есть какое-либо предложение кроме _Map, Я открыт. Я хотел бы знать, хорош ли этот “шаблон” и что Вы думаете о нем, как я могу улучшить его, я неправильно? Если я использую только 1 класс, имея статический и нестатический метод все в _Model?

Большое спасибо за Вашу справку/предложения!

1
задан Vallières 9 June 2010 в 01:41
поделиться

2 ответа

Звучит разумно из того, что вы описали, хотя настоящая проверка наступит, когда вы начнете серьезно расширять его.

Я обычно создаю ядро из трех классов:

  1. обработчик базы данных
  2. общий обработчик объектов
  3. общий обработчик коллекций

Каждая таблица получает один производный от класса объекта, который представляет одну строку в таблице, и класс, производный от коллекции, который представляет часть или всю таблицу и возвращает отдельные объекты по запросу. Существует также статическая функция "регистрации" для установки всей необходимой информации (имя таблицы, допустимые поля и т.д.) один раз для каждого класса.

Иногда класс коллекции также является объектом для другой таблицы. С этим легко справляются общие объекты и механизм регистрации, который я написал давным-давно.

1
ответ дан 2 September 2019 в 23:56
поделиться

Эту модель я использую во многих своих приложениях, хотя для простоты я объединил методы стиля выборки в тот же класс, что и методы типа insert () . Это особенно легко сделать в PHP 5.3 со статическими членами с поздним связыванием, поэтому ваша карта fetchById , определенная в суперклассе, может получить доступ к определенной в подклассе переменной table_name (например).

1
ответ дан 2 September 2019 в 23:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: