Вопрос касательно геттеров, сеттеров и компонентов в Coldfusion 8 - PullRequest
0 голосов
/ 03 июня 2011

Итак, я пытаюсь изучить и использовать компоненты, чтобы сделать мой код лучше ...

Я понимаю, что такое геттеры и сеттеры ... однако я не уверен, куда их поместитьуважение к тому, как работает мой компонент.Мой компонент - факультет, который имеет уникальный идентификатор и отдел.Я хочу, чтобы вся моя информация была в структурной форме, потому что на каждом факультете много информации.Мой метод init инициализировал бы id и отдел конкретного экземпляра, а затем продолжал вызывать запрос, который заполняет остальную информацию в структуру.Я просто не уверен, как сделать методы получения и установки для идентификатора и отдела ... я просто инициирую "пустой" экземпляр и затем использую метод получения / установки для фактического ввода?

ТакжеЕще одна мысль / вопрос, касающийся компонентов: должен ли мой компонент иметь методы, которые имеют дело с отдельными объектами (отдельными лицами), или я могу также иметь методы в своем компоненте, который имеет дело с целым (например, функция поиска для всех людей)... или я должен разделить два?

Спасибо!

1 Ответ

3 голосов
/ 03 июня 2011

Вот CF8 способ установки CFC факультета. Обратите внимание, что я не использовал область действия 'instance', потому что, когда пришло время перейти на CF9, вы можете удалить получатели / установщики и добавить accessor=true к cfcomponent, и все готово. Однако может оказаться полезным добавить искусственную область видимости «экземпляр», когда вам нужно извлечь данные из CFC в качестве структуры для DAO для сохранения вашего объекта.

<cfcomponent>
  <!--- does nothing in CF8 other then for documentation purposes --->
  <cfproperty name="id">
  <cfproperty name="department">

  <!--- if you want to type your param and return type for functions in CF8, use CFML --->
  <cfscript>
    function init (id, department)
    {
      setId(id);
      setDepartment(department);

      return this;
    }

    function getId() {
        return variables.id;
    }

    function setId(id) {
         variables.id = arguments.id;
    }

    // do the same for dept
    // make use of Snippet in CFEclipse / CF Builder to gen for you

  </cfscript>

</cfcomponent>

Могу ли я иметь методы в моем компонент, который имеет дело со всем (как функция поиска для всех физические лица). ... или я должен отделиться два?

Обычно в мире CF (вдохновленном миром Java) мы разделяем их на FooService без состояния и кэшируем ваш FooService как синглтон в области действия Application. Затем реализуйте методы Create Update Update Delete (CRUD), которые обращаются к БД на уровне FooDAO (объект доступа к данным). Ваш FooService будет затем вызывать методы CRUD в FooDAO для чтения (и заполнения) объекта Foo для вас.

...