2009-07-09 5 views

Antwort

12

CFPROPERTY ist nur zum Bereitstellen von Metadaten für eine Komponente nützlich. Die einzige Zeit, die ich sie nutze, ist die Erstellung einer Komponente für einen Web Service, wenn sie benötigt wird.

Hier ist ein TechNote, die weiter CFPROPERTY ein wenig diskutiert: http://kb2.adobe.com/cps/191/tn_19169.html

Die Variablen Anwendungsbereich ist „geschützt“ und nur innerhalb der Komponente zur Verfügung. Die Bereichsvariablen "this" sind öffentliche Eigenschaften. Und natürlich ist jede mit dem Schlüsselwort "var" deklarierte Variable für diese Methode privat.

Hier einige mehr auf die Komponente Bereichen: http://www.hemtalreja.com/?p=94

+2

In cf9 hat cfproperty eine Menge Aufmerksamkeit bekommen und richtet jetzt tatsächlich die Variablen für eine Komponente ein. Wenn Sie auch die Accessors-Direktive hinzufügen, erhalten Sie auch Standard-Getter und Setter. – anopres

6

Hinweis: cfproperty Tag tut NICHT definierten Variablen.

Es ist jedoch hilfreich, wenn Sie CFC Explorer (wechseln Sie zum CFC direkt), so dass Sie die Eigenschaften des CFC-Objekt zu sehen.

FYI ... cfproperty wird in CF9 viel nützlicher sein. Siehe: ORM - Rethinking ColdFusion Database Integration

+1

Sie können auch die Metadaten der Eigenschaft mit CF8s onMissingMethod verwenden, um zu definieren, welche Eigenschaften für eine Bean festgelegt werden können. –

0

cfproperty nützlich ist, wenn sie in entfernten Methoden benutzerdefinierte Objekte verwenden. Zum Beispiel nehme ich die folgende Komponente hatte:

<cfcomponent displayname="User"> 
    <cfset variables.firstName = "first" /> 
</cfcomponent> 

, die ich als eine Rückkehr zu einer Remote-Methode verwenden wollte über SOAP verbraucht wird. Ich müsste <cfproperty> Tags für jede Variable, die ich in das zurückgegebene Objekt einkapseln wollte, damit dieses Objekt als komplexer Typ in das WSDL-Dokument aufgenommen werden kann. Die Komponente von oben müsste daher lauten:

<cfcomponent displayname="User"> 
    <cfproperty name="firstName" type="string" /> 
    <cfset variables.firstName = "first" /> 
</cfcomponent>