String Interpolation:
<cfset name = "Danny" />
<cfset greeting = "Hello, #name#!" />
<!--- greeting is set to: "Hello, Danny!" --->
Auto-maskierte String Interpolation in cfquery
:
<cfset username = "dannyo'doule" ?>
<cfquery ...>
select u.[ID]
from [User] u
where u.[Username] = '#username#'
</cfquery>
<!--- the query is sent to the server (auto-escaped) as: --->
<!--- select u.[ID] from [User] u where u.[Username] = 'dannyo''doule' --->
<!--- note that the single-quote in the username has been escaped --->
<!--- by cfquery before being sent to the database server --->
Passing komplexe Argumente/Attribute in CFML:
<cfset p = StructNew() />
<cfset p.firstName = "Danny" />
<cfset p.lastName = "Robinson" />
<cfmodule template="modules/view/person.cfm" person="#p#">
<!--- the variable Attributes.person will be --->
<!--- available in modules/view/person.cfm --->
Passing comp Lex Argumenten erfordert #
Signes nur in CFML, nicht CFScript. Darüber hinaus können Sie jede Art von Wert übergeben: einfache Werte, Arrays, Strukturen, cfcomponents, cffunctions, Java-Objekte, com Objekte usw.
In all diesen Fällen, den Text zwischen den #
Zeichen hat nicht haben der Name einer Variablen sein. In der Tat kann es durch jeden Ausdruck. Natürlich muss der Ausdruck für die Zeichenfolgeninterpolation einen einfachen Wert ergeben, aber für das Argument/die Attributübergabe in CFML kann der Ausdruck auch einen beliebigen komplexen Wert auswerten.
Es dauert ein wenig Zeit, um die Regeln zu lernen. Aber Sie müssen es nicht wirklich verwenden, und ich würde empfehlen, herauszufinden, wann Sie es wirklich brauchen, und es nicht verwenden, wenn Sie es nicht brauchen. Siehe meine Antwort unten. – yfeldblum