Не являюсь большим сторонником популярных CMS движков. Но как то раз наткнулся на Magento. И очень понравился их способ хранения данных продуктов. EAV(entity-attribute-value), для меня это был новый путь. Под впечатлением, решил делать свое, подсматривая решения проблем в Magento. Про разум и слабоумие или про стремление несовершенного к совершенному, - отдельная тема. Просто начал делать.

Первая попытка заняла много времени, в качестве плана был эксель файл который периодически пересматривался и дополнялся новыми задачами с указанием затраченных часов. Свести всё получилось только за счёт тестирования, но в последующем выяснилось что там много лишнего и можно проще сделать. В конце концов я выгорел и забил на месяц.

Походил какое то время и решился вторую попытку с нуля делать. Сделал план осязаемым. Возился с архитектурой, исправил недочёты. Подрезал всё что может быть лишним. Было решено пока только CRUD entity + import/export. Начал делать. Пригодился опыт первой версии, многое стало ясным, как сделать лучше, а что вообще не делать. Но под конец все же возникли проблемы, выяснилось что при планировании архитектуры я не учел в import/export пару важных моментов(напр. querty builder совсем не учел), поэтому пришлось доделывать. Компенсировал это временем и усилиями.

EAV это анти-паттерн, под его влиянием малые вещи можно очень долго делать, но важно понимать куда идти и нужно ли это вообще, а поскольку эта работа и пост на Хабрe дебютные, нужно следовать законам обратной связи. Поэтому хотел бы узнать ваше мнение.

Спасибо.

GitHub