Я написал эту самую вещь, это своего рода отполированный эшафот. По сути, это класс, конструктор которого использует используемую таблицу, массив, содержащий имена и типы полей, и действие. На основании этого действия объект вызывает метод сам по себе. Например:
Это массив, который я передаю:
$data = array(array('name' => 'id', 'type' => 'hidden')
, array('name' => 'student', 'type' => 'text', 'title' => 'Student'));
Тогда я вызываю конструктор:
new MyScaffold($table, 'edit', $data, $_GET['id']);
В приведенном выше случае конструктор вызывает метод edit, который представляет форму, отображающую данные из таблицы $, но только поля, которые я установил в своем массиве. Используемая запись определяется методом $ _GET. В этом примере поле 'student' представлено в виде текстового поля (отсюда и тип 'text'). «Заголовок» - это просто используемая метка. Будучи «скрытым», поле ID не отображается для редактирования, но доступно для использования программой.
Если бы я передал «delete» вместо «edit», он удалил бы запись из переменной GET. Если бы я передавал только имя таблицы, он по умолчанию представлял бы список записей с кнопками для редактирования, удаления и нового.
Это всего лишь один класс, который содержит все CRUD с большим количеством настраиваемых. Вы можете сделать это так сложно или просто, как вы хотите. Сделав его универсальным классом, я могу добавить его в любой проект и просто передать инструкции, информацию о таблицах и информацию о конфигурации. Я мог бы для одной таблицы не хотеть разрешать добавление новых записей через эшафот, в этом случае я мог бы установить «newbutton» в значение false в моем массиве параметров.
Это не основа в общепринятом смысле. Просто автономный класс, который обрабатывает все внутри. Есть некоторые недостатки этого. Ключевые из них должны состоять в том, что все мои таблицы должны иметь первичный ключ с именем 'id', вы можете обойтись без этого, но это усложнит ситуацию. Другое дело, что необходимо подготовить большой массив, детализирующий информацию о каждой таблице для управления, но вам нужно сделать это только один раз.
Об этой идее см. здесь