从另一个函数访问函数参数

时间:2013-05-20 18:59:48

标签: coldfusion coldfusion-9

我正在尝试创建一个自定义调试工具,我需要使用一个包含两个独立函数的组件。第一个函数(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上收到了一个未定义的错误。做这样的事的正确方法是什么?

1 个答案:

答案 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中创建的变量范围变量仅适用于组件及其功能,而不适用于实例化组件或调用其功能的页面。