Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Для профи > ООП идеологический момент |
Автор: Muchenik 23.10.2009, 20:31 | ||||
Доброго времени суток. Возник небольшой спор по поводу мелочного момента при реализации модели. Прошу высказать мнение с аргументацией по этому поводу. Ситуация следующая, есть модель (Model), в которой реализованы методы валидации и добавление данных. Есть две спорных реализации, типа Вариант 1:
Вариант 2:
Всем заренее спасибо. |
Автор: solenko 23.10.2009, 22:56 |
Какое имеет отношение htmlspecialchars к валидации? Зачем вообще htmlspecialchars на сохранении? Зачем несколько шагов валидации? Валидация -- процесс, которй ни коим образом не изменяет данные. Результат валидации -- булево значение либо exception в зависимости от религии. |
Автор: Muchenik 24.10.2009, 00:34 |
Меня более интересует вопрос, как правильнее, хранить информацию в свойстве и обрабатывать ёё по ходу или передавать аргументом в методе, как показано на примере, после чего возвращать результат. Сорри, наверно я не четко сформулировал вопрос. Поэтому Какое имеет отношение htmlspecialchars к валидации? - никакого, класс - это набросок для примера. Зачем вообще htmlspecialchars на сохранении? - предпочитаю обрабатывать до сохранения. Не согласны? Зачем несколько шагов валидации? - тут имел ввиду обработка данных в несколько шагов а не валидация. Валидация -- процесс, которй ни коим образом не изменяет данные. Результат валидации -- булево значение либо exception в зависимости от религии. - спасибо знаю. |
Автор: youri 24.10.2009, 03:28 |
приведи кокретный пример шагов |
Автор: MyDarkSide 9.11.2009, 11:16 | ||||||
С точки зрения православного ООП, должен быть сделан отдельный класс напр. Validator который должен содержать набор методов для проверки данных, и которые будут возвращать булево значение, типа:
вызывать в моделе вот так: Validator::is_phone($data['phone']) в модели если она заточена под конкретную задачу и имеет заранее определенные поля валидатор можно вызывать "вручную", как показано выше, если это разработка какого-то каркаса с еще не определенными полями, то в модели можно предусмотреть ассоциативный массив типа
а в базовый для всех моделей класс вынести метод, который будет вызывать соответствующую проверку, типа:
|
Автор: Kevin 11.11.2009, 16:50 |
Strategy Pattern в поставленную задачу хорошо вписывается. |