Конструкторы объектов и уникальные идентификаторы - PullRequest
2 голосов
/ 16 февраля 2011

Я промочил ноги в ООП и у меня возник вопрос о __construct() содержимом:

Предположим, я хочу создать класс PlayResult, который будет защищен ID, Dateи Winner свойства.Это может показаться логичным для использования в методе __construct(), но ID - это уникальный автоматически увеличиваемый идентификатор, генерируемый MySQL при первом добавлении результата воспроизведения в таблицу.

Теперь идентификатор очень важен для моего кода, потому что именно так я отслеживаю отдельные записи, когда они редактируются.Тем не менее, очевидно, что когда пользователь использует форму HTML для отправки нового результата воспроизведения, значение идентификатора отсутствует, поскольку результат еще не введен в базу данных.

Итак, идентификатор должен входить в конструктор или нет?Или я должен построить только с датой и победителем, а затем установить идентификатор, если он у меня есть?

Спасибо: -)

1 Ответ

1 голос
/ 16 февраля 2011

За сохранение объекта в базе данных отвечает не объект (если это не ActiveRecord), а класс на уровне постоянства, например, Шлюз табличных данных . Таким образом, класс PlayResult не должен беспокоиться об установленном идентификаторе или нет и быть необязательным полем.

Если вы хотите, чтобы идентификатор требовался в объекте, вам нужно проверить, существует ли он в базе данных (см. Репозиторий или Поле идентификатора ). Если нет, сначала создайте новую запись в базе данных, затем создайте экземпляр объекта PlayResult с новым идентификатором.

...