Написание валидатора класса / поддержание правильного ООП - PullRequest
1 голос
/ 01 марта 2012

У меня есть класс с именем Component, который является базовым классом для многих других типов компонентов (например, Text, Image ...) и выглядит так:

function __construct($data) {...}

abstract public function build();
...other methods, getters and setters

Способ, которым этиКомпоненты используются следующим образом:

  1. Пользователь загружает настройки для создания определенного типа компонента
  2. Настройки компонента очищаются и сохраняются в БД
  3. Пользователь, напозднее определяет, какой из их компонентов использовать, и отправляет соответствующие данные

В настоящее время я получаю настройки для каждого компонента через объект JSON, который конечный пользователь отправляет мне ... так что яЯ хотел бы сделать, это построить валидатор / очиститель, чтобы помочь мне в части # 2 выше.

Весь код валидации уже есть в каждом компоненте через их методы получения и установки, так что в идеале я бы хотелсделать, это попытаться создать компонент с настройками, предоставленными пользователем, и посмотреть, были ли какие-либо ошибки.

Единственная проблема с этим, каждый компонент требует инициализации данных - столько, сколькоВнутренние функции требуют, чтобы данные были установлены.

Я думал о нескольких способах решения этой проблемы (см. ниже), но я не фанат ни одного из них.Поэтому я хотел бы, чтобы ваши идеи о том, как справиться с этим.

  • Разделите настройки на их собственный класс, чтобы компоненты и валидатор могли использовать их, не требуя каких-либо «данных»
  • Используйте фиктивные данные для компонентов

1 Ответ

1 голос
/ 01 марта 2012

Если я понимаю, что вы пытаетесь сделать, вот что я, вероятно, сделал бы.

Создайте статический метод для ваших объектов, который будет проверять все настройки компонента за один вызов. Этот статический метод мог бы создать фиктивный объект (что-то вроде того, что вы говорили) и, в свою очередь, использовать проверку, уже встроенную в ваши методы получения и установки. Этот объект затем может быть отброшен, и статический метод может вернуть какое-то утверждение, если проверка прошла успешно. В качестве альтернативы статический метод может возвращать некоторый массив ошибок, если простого возврата логического значения недостаточно.

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