Daha eski bir siteyi CF 10'a dönüştürüyorum ve bazı yardımcı kodlarımı iletmek istedim.ColdFusion - Bir sorguyu CFC ayarlayıcılarına dönüştürme
<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>
ben 'getMetaData()' kullanıldığı mevcut özelliklerin kullanışlı değerlendirmeyle structKeyExists(variables.instance, local.col)
yerini almış,:
kod sorguda, bizim örneğinde şeyler bulur arar ve onları doldurur ...
amacıyla ben <cfset this[local.col] =arguments.source[local.col] />
bunu değiştirirseniz <cfset variables.instance[local.col] = arguments.source[local.col]) />
, bu örtük ayarlayıcılar yok sayar ve sadece bu kapsamda sonuçları koyar: ama sonraki satıra ile sorun yaşıyorum
<cfset setValue =arguments.source[local.col] />
<cfset evaluate("set#local.col#('#setValue#')" />
ama bu karmaşık görünüyor ve eğilimli hatası (çok dizeleri herhangi bir "'" s kaçmak gerekir): denemek ve bizim belirleyiciler çağırmak, ben bu kod biraz denedik.
Muhtemelen birkaç düzine kez this.setPROPERTYNAME(query.COLUMN)
aramak zorunda kalmadan bir CFC özelliklerinin tümünü veya tümünü yüklemek için bir sorguyu kullanmanın en iyi yolu nedir ???? dinamik yöntemleri çağırmak istiyorsanız
evet! "Bir yöntemi dinamik olarak nasıl arayabilirim?" Kullanmak için doğru fiilleri düşünemedim ... stoopid tatil, beynim sızıyor. –
Hey Stephen ... @ baynezy'nin cevabı benimkinden daha iyi! Önerdiğimden çok önerdiği şeyle koşmalısın. –