Каков наилучший способ включения UDF / CFC в контроллер ColdFusion Model-Glue? - PullRequest
1 голос
/ 19 сентября 2011

У меня есть некоторые общие UDF и CFC, которые я хотел бы сделать доступными для всех моих контроллеров. Я использую Model-Glue 3. Я думал о нескольких способах сделать это:

  1. Создайте базовый контроллер, который имеет <cfinclude> в UDF и создает экземпляры CFC. Все остальные контроллеры наследуются от этого контроллера.
  2. Конвертируйте все UDF в CFC и используйте ColdSpring.xml, чтобы превратить CFC в бины. Затем сделайте его доступным для контроллера с помощью атрибута beans в ModelGlue.xml.
  3. Сохраните UDF и CFC в папке помощников и получите к ним доступ, используя область помощников. Тем не менее, похоже, что он предназначен для использования представлением, а не контроллером.
  4. Создайте глобальный onRequestStart, который будет создавать экземпляры CFC и сохранять их в объекте event. Затем контроллеры получат доступ к CFC, извлекая их непосредственно из объекта event.

У меня вопрос: какой метод используется большинством людей, чтобы сделать общий набор UDF и CFC доступным для всех контроллеров?

1 Ответ

3 голосов
/ 19 сентября 2011

Я бы использовал вариант 2 выше.

Для тех объектов, которым нужны вспомогательные методы, я бы использовал DI для добавления в них вспомогательного объекта. Это будет более гибким в будущем.

Мне не нравится идея базового объекта со всеми помощниками. Вот почему:

  1. Что если позже вы захотите разбить помощников в нескольких ХФУ? Ты не можешь В зависимости от того, сколько справочных функций у вас есть и сколько они могут вырасти, это может сделать ваши объекты безобразными. Что если у вас когда-нибудь будет 50 вспомогательных функций? Вы действительно хотите, чтобы у ваших контроллеров было 50 дополнительных методов, которые на самом деле не имеют ничего общего с их основной задачей.

  2. Разделение проблем. Контроллеры должны беспокоиться о том, чтобы быть контроллерами. Они не должны быть загружены дополнительными функциями, чтобы они знали, как форматировать строки. Это должно быть обработано StringHelper или чем-то еще.

Два других варианта звучат не очень хорошо. Что такое сфера помощи?

...