|
@@ -54,7 +54,7 @@ $comment->save();
|
|
|
Класс должен обеспечивать возможность работы с СУБД исходя из парадигмы **Active Record**, т. е.
|
|
|
|
|
|
### Класс
|
|
|
-Класс наследник ('Posts' или 'Comments' в примере выше) является сущностью, связанной с таблицей в СУБД.
|
|
|
+Класс наследник (`Posts` или `Comments` в примере выше) является сущностью, связанной с таблицей в СУБД.
|
|
|
Класс должен уметь:
|
|
|
- узнать структуру таблицы (`DESC TABLE`), используя позднее статическое связывание (имя таблицы в поле `$__table__`)
|
|
|
- исходя из структуры таблицы, узнать имя первичного ключа (может быть `id`, `post_id` и так далее)
|
|
@@ -75,8 +75,8 @@ $comment->save();
|
|
|
Сделайте так, что бы имя первичного ключа у вас извлекался из СУБД с помощью `DESC TABLE` и в дальнейшем используйте его как статическую переменную, каждую для своего класса-наследника `Model`.
|
|
|
|
|
|
### Stage3
|
|
|
-Добавьте флаг измененности записи (`dirty`) и не сохраняйте запись если она неизменна
|
|
|
-Добавьте **Identity Map**, для того, что бы объекты, полученные по одному и тому же первичному ключу не дублировались в памяти.
|
|
|
+- Добавьте флаг измененности записи (`dirty`) и не сохраняйте запись если она неизменна.
|
|
|
+- Добавьте **Identity Map**, для того, что бы объекты, полученные по одному и тому же первичному ключу не дублировались в памяти.
|
|
|
|
|
|
### Пожелания и советы по реализации
|
|
|
#### Структура таблицы и имя первичного ключа:
|
|
@@ -102,9 +102,9 @@ $comment->save();
|
|
|
|
|
|
|
|
|
#### Конструктор
|
|
|
-- Если конструктор без параметров, то предполагается, что объект сконструирован для новой записи.
|
|
|
+- Если конструктор без параметров, то предполагается, что объект сконструирован для новой записи. (т. е. при `save` будет `INSERT`)
|
|
|
- Конструктор так же может быть вызыван из `getByPk`. В таком случае используйте `get_called_class` или `__class__` из **PHP7**, для того, что бы инстанциировать потомка.
|
|
|
-- Если конструктор вызывается из `getByPk`, то в него передаются данные из СУБД, которые сразу попадают в `$values`. Пусть это будет первым параметров конструктора.
|
|
|
+- Если конструктор вызывается из `getByPk`, то в него передаются данные из СУБД, которые сразу попадают в `$values`. Пусть это будет первым параметром конструктора со значением по умолчанию, которое позволит запускать его без параметров.
|
|
|
|
|
|
|
|
|
# Делайте всё поэтапно
|