PHP шаблон базы данных вопросы / предложения - PullRequest
1 голос
/ 09 июня 2010

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

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

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

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

$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?

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

Ответы [ 2 ]

1 голос
/ 09 июня 2010

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

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

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

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

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

1 голос
/ 09 июня 2010

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

...