Шаблон спецификации PHP, позволяющий преобразование в sql

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

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

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

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

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

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

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


person koen    schedule 24.11.2009    source источник


Ответы (1)


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

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

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

person Gordon    schedule 18.02.2012