
77
DEVELOPING
COLDFUSION 9 APPLICATIONS
The CFML Programming Language
Las
t
upda
te
d 8/5/2010
Example 1
You might be inclined to use the
Evaluate
function in code such as the following:
<cfoutput>1 + 1 is #Evaluate(1 + 1)#</cfoutput>
Although this code works, it is not as efficient as the following code:
<cfset Result = 1 + 1>
<cfoutput>1 + 1 is #Result#</cfoutput>
Example 2
This example shows how you can use an associative array reference in place of an
Evaluate
function. This technique
is powerful because:
•
Most ColdFusion scopes are accessible as structures.
•
You can use ColdFusion expressions in the indexes of associative array structure references. For more information
on using associative array references for structures, see “
Structure notation
” on page 93.
The following example uses the
Evaluate
function to construct a variable name:
<cfoutput>
Product Name: #Evaluate("Form.product_#i#")#
</cfoutput>
This code comes from an example where a form has entries for an indeterminate number of items in a shopping cart.
A product name field exists for each item in the shopping cart. The field name is of the form product_1, product_2,
and so on, where the number corresponds to the product entry in the shopping cart. In this example, ColdFusion does
the following:
1
Replaces the variable i with its value, for example 1.
2
concatenates the variable value with "Form.product_", and passes the result (for Form.product_1) to the
Evaluate
function, which does the remaining steps.
3
Parses the variable product_1 and generates an executable representation of the variable. Because ColdFusion must
run its parser, this step requires substantial processing, even for a simple variable.
4
Evaluates the representation of the variable, for example as "Air popper".
5
Returns the value of the variable.
The following example has the same result as the preceding example and is more efficient:
<cfoutput>
ProductName: #Form["product_" & i]#
</cfoutput>
In this code, ColdFusion does the following:
1
Evaluates the expression in the associative array index brackets as the string "product_" concatenated with the value
of the variable i.
2
Determines the value of the variable i; 1.
3
Concatenates the string and the variable value to get product_1.
4
Uses the result as the key value in the Form structure to get Form[product_1]. This associative array reference
accesses the same value as the object.attribute format reference Form.product_1; in this case, Air popper.
This code format does not use any dynamic evaluation, but it achieves the same effect, of dynamically creating a
structure reference by using a string and a variable.
Содержание COLDFUSION 9
Страница 1: ...Developing Applications ADOBE COLDFUSION 9...