2017-10-29 4 views
2

Ich möchte einen serverseitigen Validierungscode schreiben, um alle Benutzereingaben auf meiner Seite zu überprüfen. Ich möchte alle diese serverseitigen Validierungen von der Präsentationsschicht behalten. Jetzt schaue ich mir an, eine Komponente zu erstellen und alle Validierungsfunktionen darin zu behalten. Ich werde <cfinvoke> Tag verwenden, um auf die Validierungsmethoden auf meiner Benutzerseite zuzugreifen. Aber das Problem ist, ich muss Validierung für etwa 50 Benutzereingaben anwenden und müssen <cfinvoke> Tag 50 Mal verwenden. Kann mir jemand sagen, dass die Verwendung von <cfinvoke> oft die Leistung beeinträchtigt oder gibt es einen anderen besseren Ansatz, mit dem ich gehen kann?Verwenden von <cfinvoke> in ColdFusion

Antwort

3

Es gibt keinen sichtbaren Overhead mit <cfinvoke>. Aber ich würde dir trotzdem empfehlen, es hier zu vermeiden. Stattdessen betrachten diese (Beispiel):

Validator.cfc

<cfcomponent> 

    <cffunction name="validateX" access="public" ...> 
     ... 
    </cffunction> 
    <cffunction name="validateY" access="public" ...> 
     ... 
    </cffunction> 
    <cffunction name="validateZ" access="public" ...> 
     ... 
    </cffunction> 

</cfcomponent> 

controller.cfm

<cfset validator = new Validator()> 

<cfset validator.validateX(...)> 
<cfset validator.validateY(...)> 
<cfset validator.validateZ(...)> 
... 

Jetzt können Sie leicht mit dem Prüfungsergebnis arbeiten.

Wenn Sie Rückkehr boolean:

<cfif validator.validateX(...)> 
    ... 
<cfelse> 
    ... 
</cfif> 

Wenn Sie ein Array mit Fehler zurück:

<cfset errors = []> 
<cfset errors.addAll(validator.validateX(...))> 
<cfset errors.addAll(validator.validateY(...))> 
<cfset errors.addAll(validator.validateZ(...))> 

usw.

<cfinvoke> eine Instanz der Klasse erzeugt (new Validator()) und ruft die Methode validateX(...) auf die gleiche Weise. Der Hauptunterschied besteht darin, dass die Instanz auf jeder <cfinvoke> neu erstellt wird und die Rückgabe als Eingabevariable (returnVariable) angegeben werden muss, was in den meisten Fällen mühsam ist.

+0

Danke Alex. Kannst du den Unterschied zwischen und deinem Weg erklären? Ich bin neu in der kalten Fusion. Dein Weg scheint lesbarer zu sein. –

+0

Es funktioniert. Es hat mir gefallen –

+0

Wird dieser Ansatz bei der kalten Fusion 9 funktionieren? –