2012-03-01 3 views
1

Я использую ColdFusion 9.0.1Какая правильная область применения?

Я запускаю страницу, которая будет содержать другие страницы. Основная цель этой страницы - определить, какую страницу включить. Страницы, которые будут включены, будут использовать переменную, которую я использую на странице, которая будет MovieID (в данном случае).

У меня вопрос, который является лучшим сметы в использовании на этой странице? Это было бы ПЕРЕМЕННЫМ?

<cfscript> 
Lookup = CGI.QUERY_STRING; 
Query = CFC.doLookup(Lookup); 
if (Query.RecordCount == 0) { 
    include "Content/Home.cfm"; 
} else { 
    // MOVIE PAGE 
MovieID = Query.MovieID; // WHAT SCOPE SHOULD I USE HERE? FOR MOVIEID? 
include "Content/Movie.cfm"; 
} 
</cfscript> 

ответ

3

Да: Переменные

Может быть: приложений, Cookie Request, Server, Session

No: аргументы, атрибуты, Caller, CGI, клиент, Flash, форма , Local, This ThisTag, Thread, thread local, URL

Для получения информации о каждой сфере деятельности, che ck документация CF9: scope types.

Похоже, вы внедряете Front Controller pattern.

Внесите Application.cfc с помощью onRequest(), который запускает фрагмент кода. Таким образом, он перехватит все входящие запросы и включит соответствующий cfm. Пропуская необходимость в обработчике index.cfm, который просто включает в себя другие cfm-шаблоны.

Дальнейшая оптимизация. Попросите метод doLookup() вернуть Struct, содержащий только recordCount + movieId, поскольку это все, что вы используете. Возвращение целого запроса происходит медленнее, чем просто структура из двух чисел.

CF9 документация: Application.cfc.

+0

Большое спасибо за дополнительную информацию (ссылка Wiki) и предложение переместить контроллер на Application.cfc. Теперь, когда вы упомянули об этом, это идеальная идея. Большое спасибо!!! –

+0

Query.MovieID также может быть использован, и он был бы более или менее прочитанным. –

3

Variables (это то, что у вас есть), безусловно, работает. Другим разумным вариантом будет Request, но я бы наклонился к variables за request.

+0

Джейк, спасибо за разъяснение и подтверждение моих мыслей. Я очень ценю это. –

2

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

Фактически, область Request была первоначально представлена ​​для Allaire Spectra с целью обмена переменными в пользовательских тегах.

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

+0

Да, похоже, что ЗАПРОС может иметь небольшое преимущество. Спасибо за информацию! –

Смежные вопросы