在 ColdFusion 中,将函数设置为变量和在主题标签中调用函数有什么区别?
In ColdFusion, what is the difference between setting a function to a variable and calling a function in hashtags?
我写了下面的函数:
<cffunction name="check_session_valid" returntype="boolean">
<cfif NOT StructKeyExists(session,"username") OR (len(session.username) EQ 0)>
<script>location.href = 'logout.cfm'</script>
<cfabort>
</cfif>
<cfset session.myApp_start = now()>
<cfreturn true>
</cffunction>
在我的 .cfm 页面中,我可以使用
调用该函数
<cfset session_valid = application.lib.check_session_valid()>
或
#application.lib.check_session_valid()#
有什么区别?最佳做法?
既然你询问了最佳实践,这是一个见仁见智的问题,我认为你可以通过让它返回 true 或 false 来改进你的函数,这取决于 session.username
是否存在并且长度更大大于 0。那么你可以这样使用它:
<cfif application.lib.check_session_valid()>
code for this condition
<cfelse>
<cflocation href = "logout.cfm">
<!--- note that cfabort is not necessary --->
<cfif>
关于您的具体问题,我认为额外的变量 session_valid
是浪费打字时间。然而,这只是我的意见。
与您的问题无关,我很奇怪您会将用户引导至名为 logout.cfm 的页面。用户通常会被定向到允许他们登录的页面。
老实说,两者都是有效的,并且都将被视为最佳实践,具体取决于您要执行的操作。
我的经验是,如果我需要多次使用函数调用的结果,我会将其设置为一个变量
myResult = application.lib.check_session_valid();
如果我只需要使用一次变量,我会按照 Dan 提到的去做
if( application.lib.check_session_valid() ){
// Do stuff
}
你展示的例子之间的区别是
<cfset session_valid = application.lib.check_session_valid()>
这会将名为 session_valid
的变量设置为调用 check_session_valid()
返回的任何值。
#application.lib.check_session_valid()#
这将在 .cfm 页面中简单地呈现从对 check_session_valid()
的调用返回的值,假设它在 <cfoutput>
标记内。还有其他地方也会呈现该值,例如 <cfsavecontent>
.
内
我写了下面的函数:
<cffunction name="check_session_valid" returntype="boolean">
<cfif NOT StructKeyExists(session,"username") OR (len(session.username) EQ 0)>
<script>location.href = 'logout.cfm'</script>
<cfabort>
</cfif>
<cfset session.myApp_start = now()>
<cfreturn true>
</cffunction>
在我的 .cfm 页面中,我可以使用
调用该函数<cfset session_valid = application.lib.check_session_valid()>
或
#application.lib.check_session_valid()#
有什么区别?最佳做法?
既然你询问了最佳实践,这是一个见仁见智的问题,我认为你可以通过让它返回 true 或 false 来改进你的函数,这取决于 session.username
是否存在并且长度更大大于 0。那么你可以这样使用它:
<cfif application.lib.check_session_valid()>
code for this condition
<cfelse>
<cflocation href = "logout.cfm">
<!--- note that cfabort is not necessary --->
<cfif>
关于您的具体问题,我认为额外的变量 session_valid
是浪费打字时间。然而,这只是我的意见。
与您的问题无关,我很奇怪您会将用户引导至名为 logout.cfm 的页面。用户通常会被定向到允许他们登录的页面。
老实说,两者都是有效的,并且都将被视为最佳实践,具体取决于您要执行的操作。
我的经验是,如果我需要多次使用函数调用的结果,我会将其设置为一个变量
myResult = application.lib.check_session_valid();
如果我只需要使用一次变量,我会按照 Dan 提到的去做
if( application.lib.check_session_valid() ){
// Do stuff
}
你展示的例子之间的区别是
<cfset session_valid = application.lib.check_session_valid()>
这会将名为 session_valid
的变量设置为调用 check_session_valid()
返回的任何值。
#application.lib.check_session_valid()#
这将在 .cfm 页面中简单地呈现从对 check_session_valid()
的调用返回的值,假设它在 <cfoutput>
标记内。还有其他地方也会呈现该值,例如 <cfsavecontent>
.