Избегайте общей области видимости cgi

У меня есть много контроллеров FW/1, которые могут выполнять различные функции в зависимости от того, является ли запрос get или post. У меня много кода, который выглядит так

if (cgi.request_method == "post")   {

Недавно я установил CLI CodeChecker для Commandbox и отключил его на своих контроллерах. Я получаю предупреждения как:

Don't use shared scope variables in a CFC | Standards | Severity: 4
  Avoid using shared scope variables from within a CFC as it breaks encapsulation.
  Users//jamesmohler/Sites/ColdFusion/P.../messagesController.cfc:13

Я вернулся к Справочному руководству FW/1 и отметил, что в нем есть функция getCGIRequestMethod()

Вопрос

Я проверял на POST все время неправильно? Чего именно мне рекомендуется избегать?

1 ответ

Решение

Короткий ответ

Я заменил

 if (cgi.request_method == "post")   {

с

 if (framework.getCGIRequestMethod() == "post")   {

Длинный ответ

FW/1 использует другие переменные CGI, но не раскрывает их. Таким образом, нет похожих функций, к которым я могу подключиться.

FW/1 копирует данные в

request._fw1 = {
   cgiScriptName = CGI.SCRIPT_NAME,
   cgiPathInfo = CGI.PATH_INFO,
   cgiRequestMethod = CGI.REQUEST_METHOD,
   ...

Что вызывает вопрос request. сфера лучше чем cgi. объем. Настоящим я подтверждаю, что это происходит не потому, что оба эти события происходят во время обработки запроса. С помощью cgi. может нарушить инкапсуляцию, но я не думаю, что вставка переменных через FW/1 rc. сфера желательна. Я также не хочу изменять FW/1 для захвата всех переменных cgi.

Другие вопросы по тегам