Artikel - Detailansicht

Icon Aktuelles ColdFusion Functions? oder eine Abwandlung des Fusebox Standards!

Einer der großen Nachteile von ColdFusion gegenüber PHP ist, das es keine Funktionen gibt.
Nun ja mit einem Kniff, kann man eine ähnliche Funktionalität erreichen. Die Idee kam mir als ich mich mal wieder mit Php und ColdFusion auseinandergestzt habe.

Die Situation:

Bei Php werden die Funktionen per "Include" in das aktuelle Template geladen und sind dann unter deren Namen aufrufbar.
ColdFusion bietet über den Befehl die Möglichkeit ebenfalls Dateien in die aktuelle Datei zu laden, das Problem ist jedoch wie kann man in diesen eingebetteten Dateien bestimmte Codestücke als "Funktion" definieren und dann geziehlt zur Ausführung bringen?

Der Lösungsansatz:

in der Include Datei werden die so gennanten Funktionen mit voneinander getrennt, so läßt sich jedem Codestück ein "Funktionsname" zuweisen.
Diese könnte folgendermaßen aussehen:

<cfswitch expression="#action#">

<cfcase value="counter_show">
CODE UM COUNTER ANZUZEIGEN
</cfcase>

<cfcase value="counter_stats">
CODE UM COUNTERSTATISTIK ANZUZEIGEN
</cfcase>

</cfswitch>


Ist eine solche "Funktions Bibliothek" eingerichtet stellt sich die Frage wie man diese einbindet. Ich sehe hier zwei Möglichkeiten, beide haben Ihre Vorzüge und Nachteile.

1. Per <CFINCLUDE> und Variable

Da der <CFINCLUDE> Befehl keine Attribute zuläßt muß man hier einen Kompromiss schließen, man verwendet Variablen. Im konkretem sieht das dann so aus:

<CFSET action="counter_show">
<CFINCLUDE TEMPLATE="functions.cfm">


Der Vorteil dieser Variante liegt daran, das die Variablen die in der "Funktion" vorkommen direkt verwendbar sind. Dies ist auch gleich der größte Nachteil, da mit Funktionen auch Variblen "verstellt" werden können, die später noch gebraucht werden könnten, hier ist es daher SEHR WICHTIG auf einen sauberen Programmierstiel zu achten. Ein weiterer Nachteil liegt darin, das vor Aufruf immer eine Variable gesetzt werden muß.

2. Per Customtag

Im Gegensatz zum <CFINCLUDE> - Befehl erlaubt es ein Customtag direkt Attribute anzugeben und ist damit flexibler. Ein Aufruf würde dann so aussehen:

<CF_FUNCTIONS action="counter_show" variable1="1">

Zu bemerken gibt es, das Custom Tags einen anderen Variablenbereich haben, um Zugriff auf die Variablen der aufgerufenen Datei zu bekommen müßen diese mit dem CALLER Atrribut versehen werden (z.B. CALLER.countername) ob dies als Vorteil oder Nachteil anzusehen ist, ist jedem selber überlassen.

Ich möchte mit diesem Artikel keinen Anspruch auf Sinngehalt nehmen, da hier die Meinungen auseinandergehen. Ich möchte nur denjenigen die noch nicht so weit sind, damit Lösungswege aufzeigen, die vorher vielleicht noch nicht bekannt waren.

Tim Köhler tim.koehler@direct-place.com - 27.03.2001

Zurück


Das deutsche ColdFusion-Forum cfml.de ist das Portal für Einsteiger und Experten zum Thema ColdFusion und der ColdFusion Markup Language (CFML).

© 2017 Webdesign & Hosting: CHC ONLINE Kassel | SOLVA Content-Management-System CMS
Urlaub-Angebote.de - Urlaub mit Bestpreis-Garantie buchen