我正在尝试创建一个自定义调试工具,我需要使用一个包含两个独立函数的组件。第一个函数(startTimer
)包含一些参数,例如startCount
,另一个参数(endTimer
)具有endCount
。我想要完成的是类似下面的代码:
<cffunction name="startTimer" access="public" returntype="void">
<cfargument name="startActionTime" type="string" required="no">
</cffunction>
<cffunction name="endTimer" returntype="void" access="public">
<cfargument name="endActionTime" type="string" required="no">
<cfset finalTime = endActionTime - startTimer.startActionTime>
<!---Some SQL will go here to record the data in a db table --->
</cffunction>
这就是我调用函数的方式
<cfscript>
location = CreateObject("component","timer");
loc =location.startTimer(
startActionTime = getTickCount()
);
end = location.endTimer(
endActionTime = getTickCount()
);
</cfscript>
我想我有范围问题,因为当我尝试运行代码时,我在startTimer.startActionTime
上收到了一个未定义的错误。做这样的事的正确方法是什么?
答案 0 :(得分:4)
您可以使用variables
范围,如下所示:
<cfcomponent>
<cfset variables.startActionTime = 0>
<cffunction name="startTimer" access="public" returntype="void">
<cfargument name="startActionTime" type="numeric" required="no">
<cfset variables.startActionTime = arguments.startActionTime>
</cffunction>
<cffunction name="endTimer" returntype="string" access="public">
<cfargument name="endActionTime" type="numeric" required="no">
<cfset finalTime = endActionTime - variables.startActionTime>
<!---Some SQL will go here to record the data in a db table --->
<Cfreturn finaltime>
</cffunction>
</cfcomponent>
来自Adobe Docs:在CFC中创建的变量范围变量仅适用于组件及其功能,而不适用于实例化组件或调用其功能的页面。