Когда варьировать ваши переменные в компонентах ColdFusion? - PullRequest
5 голосов
/ 17 марта 2011

(а) В каких случаях следует изменять переменные области и (б) в каких случаях нельзя изменять область в компонентах ColdFusion?

Ответы [ 4 ]

4 голосов
/ 17 марта 2011

Вы должны варьировать свои переменные, когда вы реализуете функцию внутри CFC, которая совместно используется несколькими запросами (т. Е. Singleton, Service CFC в области Application)

Вам не нужно (но все еще настоятельно рекомендуется) изменять область видимости ваших переменных, если каждый раз создается экземпляр CFC, и ваш метод не вызывает другой метод в том же CFC, который может получить доступ к переменным, которые вы определили в вызывающий метод. Например, удаленный метод, который вы вызвали напрямую через веб-сервис или ajax, который не вызывает другие методы, использующие переменные, которые вы не изменяли, или Controller в CFWheels.

"Вы всегда должны определять локальные переменные функции, используя ключевое слово var." по переменным CFC и области действия doc http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=buildingComponents_29.html

3 голосов
/ 17 марта 2011

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

Генри - отличный парень, но его утверждение таково: «Вам не нужно изменять область действия ваших переменных, если каждый раз создается экземпляр CFC».это неверно.:) [РЕДАКТИРОВАТЬ: Генри с тех пор отредактировал свой ответ] Я написал пример, который иллюстрирует этот пункт в этой записи блога:

http://daveshuck.com/2006/11/28/thread-safety-example-var-scope-your-loop-index-in-coldfusion-cfcs/

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

1 голос
/ 17 марта 2011

Я изменяю область видимости любой переменной, которая не является глобальной или не входит в компонент. Последнее, что вы хотите сделать, - это создавать или перезаписывать глобальные переменные в области видимости переменных

0 голосов
/ 17 марта 2011

Мы ограничиваем все переменные в функции, чтобы они оставались локальными только для этой функции.Что касается компонента, вы можете использовать переменные или эти области, чтобы сделать переменные доступными для любой функции в компоненте.Область «this» также сделает переменные непосредственно доступными для вызывающей программы, если вы правильно установили доступ.

...