避免cgi共享范围

时间:2018-10-16 04:52:12

标签: coldfusion fw1 commandbox coldfusion-2018

我有很多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吗?鼓励我避免什么事情?

1 个答案:

答案 0 :(得分: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变量。