Вопрос

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

Я изучаю некоторые новые направления и проверяю, насколько хорошо они будут работать.Код и идеи все еще очень неясны в моей голове.

Минимальные интерфейсы будут такими:

interface IRepository {
    public function get(ISpecification $specification);
}

interface ISpecification {
    public function isSatisfiedBy($candidate);
}

Если репозиторий скрывает базу данных sql, спецификацию необходимо будет преобразовать в sql.Добавление метода ->toSQL() кажется случайным.Класс, который преобразует спецификации, также является вариантом, но, похоже, создание окончательного кода sql требует больших затрат.

Идеи оценены.

Это было полезно?

Решение

Цитата из POEAA (стр. 324):

Под одеялом, Репозиторий сочетает в себе Сопоставление метаданных (329) с Объект запроса (316) для автоматического создания кода SQL на основе критериев.Независимо от того, знают ли критерии, как добавить себя в запрос, Объект запроса (316) знает, как включать объекты критериев или Сопоставление метаданных (306) сам контролирует взаимодействие — это деталь реализации.

А критерии в этих описаниях конечно ваши Шаблон спецификации.Я бы сказал, что предлагаемый вами подход к использованию toSQL Метод для объектов критериев подходит, когда приложение относительно небольшое.Как вы уже сказали, идти по другим маршрутам сложнее, но это также обеспечивает большую гибкость и развязку.В конце концов, только вы можете решить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top