Область заказа
Канонический порядок охвата ColdFusion 9:
- Локальный (только внутри ХФУ и UDF)
- Аргументы (только внутри ХФУ и UDF)
- Нить локальная (только внутри темы)
- Запрос (только внутри цикла запроса)
- Thread (только внутри потоков и шаблонов, которые вызывают потоки)
- Переменные
- CGI
- Cffile
- URL
- Форма
- Cookie
- Клиент
Документацию Adobe можно найти в Разработка приложений ColdFusion 9 .
Однако некоторые области доступны только в определенных контекстах, поэтому порядок поиска областей различается в зависимости от контекста кода.
Внутри CFML (без резьбы)
- Переменные
- CGI
- Cffile
- URL
- Форма
- Cookie
- Клиент
Внутри ХФУ (без резьбы)
- Местное
- Аргументы
- Запрос (только внутри цикла запроса)
- Переменные
- CGI
- Cffile
- URL
- Форма
- Cookie
- Клиент
Лучшая практика
Как отмечает Аль Эверетт в своем ответе, считается лучшей практикой всегда переменные области видимости. Явная область видимости создает менее неоднозначный код и обычно быстрее. Каждый раз, когда вы не определяете область действия переменной, вы рискуете получить переменную из области, в которую вы не собирались.
Когда переменная, к которой вы обращаетесь, находится в первой области видимости в порядке поиска, на самом деле немного быстрее оставить переменную без области видимости. Это связано с тем, что каждая точка в имени переменной несет небольшую стоимость, поскольку ColdFusion ее разрешает. Например, в методе CFC доступ к myVar
немного быстрее, чем local.myVar
. Это относится только к:
local
переменные в пределах CFC или UDF
- Поток
local
переменные внутри потока
variables
переменные в рамках CFML
При всех других обстоятельствах быстрее (и яснее) явно объявить область действия.
Использование этой техники следует считать плохой практикой. Вы должны использовать эту технику только в критичном для производительности коде, где вы можете гарантировать, что переменная всегда существует в предполагаемой области видимости. Имейте в виду, что это происходит за счет повышенной неопределенности.