Избегайте общей области видимости 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.