运行CF 9,0,1,274733
我有一个名为getGamesBetTypesID()的方法的自定义DAO CFC。
该方法由CF从以下属性隐式生成/合成:
<cfproperty name="gamesBetTypesID" type="numeric" />
默认变量定义如下:
<cfset VARIABLES.gamesBetTypesID = 0 />
除此之外,没有其他VARIABLES,vars,LOCAL,ARGUMENTS或称为getGamesBetTypesID的方法。所有CFC和函数变量都是正确的范围。
这个save()方法被调用了数千次,但是以下错误会被随机抛出,只有少数几次。
Detail: The symbol you provided getGamesBetTypesID is not the name of a function.
Message: Entity has incorrect type for being called as a function.
这是save()方法:
<cffunction name="save" access="public" returntype="void" output="false">
<cfif getGamesBetTypesID() eq 0 or getGamesBetTypesID() eq "">
<cfset create() />
<cfelse>
<cfset update() />
</cfif>
</cffunction>
当抛出错误时,我使用登录CFCs元数据的转储 的getMetaData(gamesBetTypesObj)。根据元数据,函数getGamesBetTypesID确实存在。
之前还有其他人吗?我已经读到它可能由于命名和范围冲突而发生,我没有。
提前致谢。
答案 0 :(得分:2)
在发布上述问题后,我删除了<cfproperty name="gamesBetTypesID" type="numeric" />
并为VARIABLES.gamesBetTypesID
添加了明确的getter和setter。
<cffunction name="getGamesBetTypesID" output="false" access="public" returntype="numeric">
<cfreturn VARIABLES.gamesBetTypesID />
</cffunction>
<cffunction name="setGamesBetTypesID" output="false" access="public" returntype="void">
<cfargument name="gamesBetTypesID" required="true" type="numeric" />
<cfset VARIABLES.gamesBetTypesID = ARGUMENTS.gamesBetTypesID />
</cffunction>
这段代码已经在生产中运行了一个星期,包括一个周末,这是我们忙碌的时期。在过去的7天里没有抛出任何例外。以前,在忙碌的一天中,最多会有15个例外。
这让我相信通过<CFPROPERTY>
生成/使用隐式访问器的错误只会出现在某些情况下。我要用Adobe
如果有任何进展,我会更新。