Есть ли библиотека, класс или иное другое решение на php?
Есть ли библиотека, класс или иное решение на php, позволяющее создавать «на лету» произвольные сущности (объекты), любые поля (характеристики) к ним, выполнять генерацию форм и сохранять введенные данные для последующей обработки?
В моей предметной области существует набор объектов, который периодически меняется. Добавляются новые, «исчезают» старые. У каждого из объектов существует множество (от 10 до 80) характеристик. Необходимо дать пользователю возможность настраивать (вводить и редактировать) их значения (строковые, числовые, булевые и др.), а потом собирать по ним статистику (история введенных данных: когда и какое значение) и делать какие-то отчеты. Т.к. объекты и их поля меняются довольно часто, то необходимо чтобы специальный пользователь через административный интерфейс мог их настраивать без изменений в исходном коде. Замечу, что нужна не просто генерация форм, а представление данных в виде сущностей (объектов) с полями.
Целиком и полностью эту задачу решает Drupal (fields, cck), но мне нужно решение для уже существующего проекта, который практически невозможно перевести на друпал.
Судя по результатам поиска в ПС, задача или мало востребована или существует принципиально иное решение, которое я, увы, так и не нашел. Может ли кто-то подсказать варианты?
Это решается на любом фреймверке + парочка программистов, готового решения думаю не будет, так как «для уже существующего проекта, который практически невозможно перевести на друпал». То-есть вам нужно узкоспециализированное решение. Так же все описанное похоже на EAV модель.
Создавтаь объекты на лету и присваивать им произвольные поля — это основа основ PHP, ничего даже ставить не надо. Подсказка: доступ к полям лучше осуществлять через фигурные скобки, если дело касается произвольных полей. $object->{$field}.
А сохранить все это в базу — как нефиг делать, в JSONе это все прекрасно сохранится в документоориентированной БД.
Правильно ли я понял, что ваш ответ нужно читать так: «зачем искать готовую либу, если можно написать свой велосипед»? Конечно, возможно, что в данном случае так и придется делать, но, вообще говоря, лично я сторонник переиспользования кода и опыта других разработчиков, которые пожелали ими поделиться. Особенно, если они этим занимаются уже давно и добились хороших результатов.
Возьмите любой фрэмворк в котором есть Scaffolding, он как раз и позволяет формировать формы для любых таблиц, так же заниматься их наполнением и удалением информации. Расширением полей и т.п. прийдется заняться отдельно и допилить на том же фрэймворке этот функционал.