避免 cgi 共享范围

Avoid cgi shared scope

我有很多 FW/1 控制器,它们可以根据请求是 get 还是 post 执行不同的功能。我有很多代码看起来像这样

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

我最近安装了 Commandbox 的 CodeChecker CLI 并在我的控制器上松开了它。我收到如下警告:

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 Reference Manual ,我注意到它有一个名为 getCGIRequestMethod()

的函数

问题

我一直以来都在错误地测试 POST 吗?我究竟被鼓励避免什么?

简答

我已经更换了

 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 变量。