Избегайте общей области видимости cgi - PullRequest
0 голосов
/ 16 октября 2018

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

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

Я недавно установил CodeChecker CLI 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 Ответ

0 голосов
/ 19 октября 2018

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

Я заменил

 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. scope лучше, чем cgi. scope.Настоящим я подтверждаю, что это происходит не потому, что оба эти события происходят во время обработки запроса.Использование cgi. может нарушить инкапсуляцию, но я не считаю желательным выдвигать переменные через rc. в FW / 1.Я также не хочу изменять FW / 1 для захвата всех переменных cgi.

...