PHP OOP Design Patterns: Должен ли я создать два отдельных класса для регистрации и проверки формы? - PullRequest
4 голосов
/ 23 апреля 2010

У меня есть два типа регистрации: регистрация A и регистрация B, каждый из которых будет иметь одни и те же поля и несколько разных полей. Я собирался создать регистрацию абстрактных классов, и у A и B будут свои собственные классы, которые простираются от регистрации.

Должен ли я создать отдельный класс проверки с отдельными классами проверки А и В, которые расширяются? или есть лучший образец для использования для чего-то подобного?

Ответы [ 4 ]

2 голосов
/ 23 апреля 2010

Я бы воспринял Регистрацию и Валидацию как отдельные объекты да.

Редактировать: Кроме того, этот вопрос SO может содержать некоторую ценную информацию для вас.

1 голос
/ 23 апреля 2010

Создайте абстрактный класс Validator с помощью метода isValid () и добавьте его к своей необходимости.

Создание класса Registration с методом validate (), принимающего объект Validator для прохождения.

Это позволит проверять что угодно с любым написанным вами валидатором.

0 голосов
/ 23 апреля 2010

Вы можете создать свой собственный класс Validator / ShowField для каждого типа поля (электронная почта, телефон, логин, пароль). Вы делаете это только один раз. Затем вы можете создать класс Form, который будет инкапсулировать всю стандартную «грязную» работу с формой (проверка полей, отображение формы, отображение сообщений проверки при необходимости и т. Д.)

Пример использования:

$form = new Form($action, $method); // $action and $method - html attributes of the form
$form->addField('Your e-mail', 'mail'); // field label (for the form) and field type (for the form and for validation)
$form->addField('Login', 'login');

$form->process(); // show form to the user or process it if already submited and sent

Ваши преимущества:

  1. Вы создаете валидаторы поля один раз.
  2. При создании класса Form все формы будут обрабатываться один раз.
  3. Все, что вы делаете, это определяете поля формы, как показано ниже.
0 голосов
/ 23 апреля 2010

Да, вам, вероятно, нужны отдельные объекты регистрации и проверки. Шаблон, который вы предложили, с абстрактной базой и ValidationA и ValidationB, которая расширяет его, будет работать. Если у вас действительно нет проверки по умолчанию, вы можете просто сделать валидацию интерфейса и иметь ValidatingA и ValidatingB, которые ее реализуют, и тогда вы сможете использовать полиморфизм времени выполнения для вызова правильного метода Validate.

Одна вещь, которую я начал осознавать, это то, что вы можете спрашивать, спрашивать, обсуждать и размышлять над такими вещами, сколько хотите, но никогда не узнаете, пока не попробуете. Подберите быстрый абстрактный базовый класс и два расширяющих его и посмотрите, выполняет ли он то, что вы хотите. Если нет, просто рефакторинг. Конечно, вы должны учитывать технический долг и т. Д., Но просто попробуйте - это лучший способ учиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...