variables

Eine immer wiederkehrende Frage ist das scoping in CFCs. Hier eine kurz Erklärung für den Scope: “variables” am Beispiel zur Nutzung des Datasource einer DAO.

myAddressCFC.cfc
name=“init” returntype=“address” output=“false” access=“public” displayname=“Initialisierung des Objectes” hint=“stellt alle Parameter als instance-Variablen im ‘this.scope’ zur Verfügung”>
 
name=“datasource” type=“string” required=“true” default=“”>

 
variables.instance.datasource = arguments.datasource>

  this />

Diese Variable ist dann in der gesamten aktuellen CFC gültig und kann somit von jeder Funktion bzw. Methode aus genutzt werden.
Um diese Variablen als Eigenschaften oder Attribute einer CFC hervorzuheben nutze ich die gängige Praxis, dem Variablennamen eine weitere Ebene “instance” hinzuzufügen.

Der Zugriff sollte allerdings prinzipiell über eine getter/setter-Methode erfolgen und nie direkt (eben nicht so wie in Beipiel 1. und 2.).
Bis auf die Ausnahme das sie evtl. in der ini()-Methode gesetzt werden, denn ich bin schreibfaul und möchte in diesem Fall einfach keine “setDatasource()”-Methode, sondern übergebe den Namen der Datasource einfach gleich der init()-Methode als Parameter mit:

Hinzu kommt das ALLE Variablen im variables-Scope als Parameter per cfArgument übergeben werden sollten, um die Unabhängigkeit einer CFC zu gewährleisten.

0 Antworten

Hinterlassen Sie einen Kommentar

Wollen Sie an der Diskussion teilnehmen?
Feel free to contribute!

Kommentar verfassen