4

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

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 参考手册,我注意到它有一个名为getCGIRequestMethod()

问题

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

4

1 回答 1

0

简短的回答

我已经换了

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

于 2018-10-19T18:17:47.960 回答