在 cfscript ColdFusion 中定义变量?
Defining variables in cfscript ColdFusion?
我试图用 cfscript
重写我的 Application.cfc
和系统中的其他 .cfc
文件。有几件事我不确定它们在 cfscript 中是如何工作的。我想知道在函数内部定义变量。例如 onRequestStart()
函数如下所示:
function onRequestStart(required string thePage) returntype="boolean" output="false" {
var request.appCode = "MyApp";
var request.appName = "Single Page Application";
var page = listLast(arguments.thePage,"/");
var onApplicationStart();
if(!listFindNoCase("Home.cfm,Auth.cfc",page)){
if(structKeyExists(SESSION, "loggedin") AND SESSION.loggedin EQ false){
location(url="https://www.myapp.org", addToken="false");
}
}
return true;
}
在定义 request/session
变量的情况下是否需要使用 var
词?如果我做什么是最佳做法,使用 var word 还是使用 local.variablename
? local
和 variables
在 cfscript
中是否相同?
var
仅用于局部变量。这意味着 are/should 在函数定义之外无法访问的变量。 Session
和 Request
分别可供每个会话和请求访问。将它们放在 var
范围内会产生可怕的结果。
您可以使用 var
或 local
,两者都有 'local' 范围。 Variables
是页面作用域,在 Variables
作用域中定义的任何变量都可以被 CFC 中的所有函数访问。
function onRequestStart(required string thePage) returntype="boolean" output="false" {
request.appCode = "MyApp";
request.appName = "Single Page Application";
var page = listLast(arguments.thePage,"/");
//this is a function call and not variable declaration.
onApplicationStart();
if(!listFindNoCase("Home.cfm,Auth.cfc",page)){
if(structKeyExists(SESSION, "loggedin") AND SESSION.loggedin EQ false){
location(url="https://www.myapp.org", addToken="false");
}
}
return true;
}
var
不 等于 <cfset>
标签,即当切换到 CFScript 语法时,您不能进行简单的搜索和替换。
var
仅用于局部变量定义。这意味着,设置结构和数组项,如 request
、session
和其他范围变量不应以 var
为前缀。
此外,函数调用必须在没有前面 var
.
的情况下编写
local
和 var
都指的是本地范围。但是请注意,如上所述,如果您想通过 local.something
定义变量,则也不需要 var
关键字。
variables
,与 local
相反,指的是页面范围,可以从组件内的任何地方和任何包含的页面访问。
有关不同范围的更多信息,您应该 read the Adobe docs。
我试图用 cfscript
重写我的 Application.cfc
和系统中的其他 .cfc
文件。有几件事我不确定它们在 cfscript 中是如何工作的。我想知道在函数内部定义变量。例如 onRequestStart()
函数如下所示:
function onRequestStart(required string thePage) returntype="boolean" output="false" {
var request.appCode = "MyApp";
var request.appName = "Single Page Application";
var page = listLast(arguments.thePage,"/");
var onApplicationStart();
if(!listFindNoCase("Home.cfm,Auth.cfc",page)){
if(structKeyExists(SESSION, "loggedin") AND SESSION.loggedin EQ false){
location(url="https://www.myapp.org", addToken="false");
}
}
return true;
}
在定义 request/session
变量的情况下是否需要使用 var
词?如果我做什么是最佳做法,使用 var word 还是使用 local.variablename
? local
和 variables
在 cfscript
中是否相同?
var
仅用于局部变量。这意味着 are/should 在函数定义之外无法访问的变量。 Session
和 Request
分别可供每个会话和请求访问。将它们放在 var
范围内会产生可怕的结果。
您可以使用 var
或 local
,两者都有 'local' 范围。 Variables
是页面作用域,在 Variables
作用域中定义的任何变量都可以被 CFC 中的所有函数访问。
function onRequestStart(required string thePage) returntype="boolean" output="false" {
request.appCode = "MyApp";
request.appName = "Single Page Application";
var page = listLast(arguments.thePage,"/");
//this is a function call and not variable declaration.
onApplicationStart();
if(!listFindNoCase("Home.cfm,Auth.cfc",page)){
if(structKeyExists(SESSION, "loggedin") AND SESSION.loggedin EQ false){
location(url="https://www.myapp.org", addToken="false");
}
}
return true;
}
var
不 等于 <cfset>
标签,即当切换到 CFScript 语法时,您不能进行简单的搜索和替换。
var
仅用于局部变量定义。这意味着,设置结构和数组项,如 request
、session
和其他范围变量不应以 var
为前缀。
此外,函数调用必须在没有前面 var
.
local
和 var
都指的是本地范围。但是请注意,如上所述,如果您想通过 local.something
定义变量,则也不需要 var
关键字。
variables
,与 local
相反,指的是页面范围,可以从组件内的任何地方和任何包含的页面访问。
有关不同范围的更多信息,您应该 read the Adobe docs。