Правильно ли сделаны методы классов User, UserInterface, AR?

error1001es

Новичок
Добрый день! хочу написать activerecord на php с нуля, кто может глянуть код и посмотреть все ли правильно с точки зрения ооп и семантики?
Код на гитхабе
 

Фанат

oncle terrible
Команда форума
Сколько в приложении предполагается иметь классов, унаследованных от AR?
 

error1001es

Новичок
Сколько в приложении предполагается иметь классов, унаследованных от AR?
Думаю класса 2-3
А что-то там не так? можно сделать названия таблиц такими же, как названия классов, чтобы не писать функцию getTableName, верно я понимаю?
 

AnrDaemon

Продвинутый новичок
AR не просто так считают убогим паттерном. Он привязывает объект целиком к конкретной структуре БД, которую ты не можешь изменить, не меняя работающего с ней объекта(et vice versa). Хотя бы сделай Table Data Gateway, если не Repository. Их проще адаптировать к изменениям структуры, и нет необходимости при этом колбасить объекты с риском поломать вообще весь проект.
 

error1001es

Новичок
AR не просто так считают убогим паттерном. Он привязывает объект целиком к конкретной структуре БД, которую ты не можешь изменить, не меняя работающего с ней объекта(et vice versa). Хотя бы сделай Table Data Gateway, если не Repository. Их проще адаптировать к изменениям структуры, и нет необходимости при этом колбасить объекты с риском поломать вообще весь проект.
а в чем сложность адаптирования к изменениям структуры ? Да и тем более про Table Data Gatewa мало где сказано, даже примеров реализации не могу найти
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
Потому что Table Data Gateway это вырожденный случай Repository. Принципиально между ними разница в процессе мапинга данных из БД на атрибуты объекта. TDG это эдакий вывернуты наизнанку AR, когда объект не сам достаёт себя, а достаётся из другого сервиса, но мапинг по сути тот же 1:1. Repository может мапить что угодно на что угодно. У меня один репо вообще собирается из собственной таблицы-индекса и двух дополнительных репо (структура и текстовые блобы).
 

fixxxer

К.О.
Партнер клуба
А что у тебя за class UserInterface такой?
Суффиксом interface принято обозначать интерфейсы, а не что-то там еще.
У тебя это больше похоже на Controller.

в чем сложность адаптирования к изменениям структуры ?
На проектах в 2-3 сущности ты этого не заметишь. Можешь смело пользоваться, когда с усложнением начнутся проблемы - сам поймешь.
 
Сверху