Scope types

The following table describes ColdFusion scopes:

Scope

Description

Application

Contains variables that are associated with one, named application on a server. The cfapplication tag name attribute or the Application.cfc This.name variable setting specifies the application name. For more information, see Using Persistent Data and Locking.

Arguments

Variables passed in a call to a user-defined function or ColdFusion component method. For more information, see About the Arguments scope.

Attributes

Used only in custom tag pages and threads. Contains the values passed by the calling page or cfthread tag in the tag’s attributes. For more information, see Creating and Using Custom CFML Tags and Using ColdFusion Threads.

Caller

Used only in custom tag pages. The custom tag’s Caller scope is a reference to the calling page’s Variables scope. Any variables that you create or change in the custom tag page using the Caller scope are visible in the calling page’s Variables scope. For more information, see Creating and Using Custom CFML Tags.

CGI

Contains environment variables identifying the context in which a page was requested. The variables available depend on the browser and server software. For a list of the commonly used CGI variables, see Reserved Words and Variables in the CFML Reference.

Client

Contains variables that are associated with one client. Client variables let you maintain state as a user moves from page to page in an application, and are available across browser sessions. By default, Client variables are stored in the system registry, but you can store them in a cookie or a database. Client variables cannot be complex data types and can include periods in their names. For more information, see Using Persistent Data and Locking.

Cookie

Contains variables maintained in a user’s browser as cookies. Cookies are typically stored in a file on the browser, so they are available across browser sessions and applications. You can create memory-only Cookie variables, which are not available after the user closes the browser. Cookie scope variable names can include periods.

Flash

Variables sent by a SWF movie to ColdFusion and returned by ColdFusion to the movie. For more information, see Using the Flash Remoting Service.

Form

Contains variables passed from a Form page to its action page as the result of submitting the form. (If you use the HTML form tag, you must use method="post".) For more information, see Introduction to Retrieving and Formatting Data.

Local (function local)

Contains variables that are declared inside a user-defined function or ColdFusion component method and exist only while a function executes. For more information, see Writing and Calling User-Defined Functions.

Request

Used to hold data that must be available for the duration of one HTTP request. The Request scope is available to all pages, including custom tags and nested custom tags, that are processed in response to the request.

This scope is useful for nested (child/parent) tags. This scope can often be used in place of the Application scope, to avoid the need for locking variables. Several chapters discuss using the Request scope.

Server

Contains variables that are associated with the current ColdFusion server. This scope lets you define variables that are available to all your ColdFusion pages, across multiple applications. For more information, see Using Persistent Data and Locking.

Session

Contains variables that are associated with one client and persist only as long as the client maintains a session. They are stored in the server’s memory and can be set to time out after a period of inactivity. For more information, see Using Persistent Data and Locking.

This

Exists only in ColdFusion components or cffunction tags that are part of a containing object such as a ColdFusion Struct. Exists for the duration of the component instance or containing object. Data in the This scope is accessible from outside the component or container by using the instance or object name as a prefix.

ThisTag

Used only in custom tag pages. The ThisTag scope is active for the current invocation of the tag. If a custom tag contains a nested tag, any ThisTag scope values you set before calling the nested tag are preserved when the nested tag returns to the calling tag.

The ThisTag scope includes three built-in variables that identify the tag’s execution mode, contain the tag’s generated contents, and indicate whether the tag has an end tag.

A nested custom tag can use the cfassociate tag to return values to the calling tag’s ThisTag scope. For more information, see Accessing tag instance data.

Thread

Variables that are created and changed inside a ColdFusion thread, but can be read by all code on the page that creates the thread. Each thread has a Thread scope that is a subscope of a cfthread scope. For more information, see Using ColdFusion Threads.

thread local

Variables that are available only within a ColdFusion thread. For more information, see Using ColdFusion Threads.

URL

Contains parameters passed to the current page in the URL that is used to call it. The parameters are appended to the URL in the format ?variablename = value[&variablename=value...]; for example www.MyCompany.com/inputpage.cfm?productCode=A12CD1510&quantity=3.

If a URL includes multiple parameters with the same name, the resulting variable in the ColdFusion URL scope consists of all parameter values separated by commas. For example, a URL of the form http://localhost/urlparamtest.cfm? param=1&param=2&param=3 results in a URL.param variable value of 1,2,3 on the ColdFusion page.

Variables

The default scope for variables of any type that are created with the cfset and cfparam tags. A Variables scope variable is available only on the page on which it is created and any included pages (see also the Caller scope).

Variables scope variables created in a CFC are available only to the component and its functions, and not to the page that instantiates the component or calls its functions.

Important: To prevent data corruption, you lock code that uses Session, Application, or Server scope variables. For more information, see Using Persistent Data and Locking.