Для моей структуры я записал эту концепцию для решения проблемы проверки формы. Я хочу, чтобы это было максимально просто для пользователя фреймворка.
Каждая форма (= объект) имеет один или несколько элементов FormElements (= объекты). Каждый FormElement может иметь 0-n FormValidators (= объекты). Все легко настраивается через бэкэнд (простой метод перетаскивания).
Когда представление формы отображается, оно проходит по всем элементам FormElements и для каждого из них проходит по всем связанным с ними FormValidators. Таким образом, он создает весь необходимый JavaScript для проверки формы на стороне клиента.
FormValidator - это легкий объект, который определяет только эти семь вещей:
- Имя класса PHP класса утилиты проверки
- имя метода класса утилиты проверки, который должен называться
строка для дополнительных аргументов (значения через запятую)
JavaScript "class" имя утилиты проверки
- имя "метода", которое должно называться
строка для дополнительных аргументов (значения через запятую)
связанный объект ErrorInfo, который содержит отформатированное сообщение об ошибке
Каждый из этих методов проверки принимает в качестве первого аргумента входную переменную с входными данными. Каждый из этих методов просто проверяет ввод, если он соответствует некоторым правилам и возвращает TRUE или FALSE.
Когда форма отправлена, FormDataManager создается и получает:
- объект Form (чтобы он знал, откуда поступили данные)
- входные данные (обычно $ _POST)
Затем он просто перебирает все FormElements, проверяет все их FormValidators и, если что-то недопустимо, перезагружает форму, которой передается массив сообщений об ошибках. Если все в порядке, данные подвергаются дальнейшей обработке (т.е. сохраняются в дБ).
Есть ли улучшения в этом дизайне? Что я пропустил?