gpt4 book ai didi

coldfusion - ColdFusion-将查询转换为CFC setter

转载 作者:行者123 更新时间:2023-12-03 21:06:56 24 4
gpt4 key购买 nike

我正在将一个较旧的站点转换为CF 10,并希望提出一些帮助程序代码。

该代码查看一个查询,找到我们实例中的内容,然后填充它们:

<cffunction name="populateSelf">
<cfargument name="source" type="query" required="yes" />
<cfif arguments.source.recordcount EQ 1>
<cfloop list="#arguments.source.columnlist#" index="local.col">
<cfif structKeyExists(variables.instance, local.col)>
<cfset variables.instance[local.col] = arguments.source[local.col]) />
</cfif>
</cfloop>
</cfif> <!--- one record? --->
</cffunction>

我已经使用'getMetaData()'对当前属性进行了方便的评估来替换了 structKeyExists(variables.instance, local.col),但是我在下一行遇到了麻烦: <cfset variables.instance[local.col] = arguments.source[local.col]) />
如果我将其更改为 <cfset this[local.col] =arguments.source[local.col] />,它将忽略隐式的setter并将结果放入此范围...

为了尝试调用我们的setter,我尝试了以下代码:
<cfset setValue =arguments.source[local.col] />
<cfset evaluate("set#local.col#('#setValue#')" />

但这似乎很复杂且容易出错(也必须转义字符串中的所有“'”)。

使用查询来加载某些或所有CFC属性而不必显式调用 this.setPROPERTYNAME(query.COLUMN)可能数十次的最佳方法是什么???

最佳答案

因此,如果我正确地阅读了所有这些内容,那么您的问题实际上是“如何动态调用方法?”,而其余所有内容都是敷料?

您可以使用字符串设置动态变量名称,然后为其设置函数引用,然后通过该引用调用该函数:

myMethodName = "set#local.col#";
myMethodReference = this[myMethodName];
myMethodReference(arguments.source[local.col]);

关于coldfusion - ColdFusion-将查询转换为CFC setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14107909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com