Variable Scopes
They gotta exist somewhere!
In the CFML language, there are many persistence and visibility scopes that exist for variables to be placed in. These are differentiated by context: in a CFC, in a function, tag, thread or in a template. All CFML scopes are implemented as structures or hash maps of key-value name pairs. The default scope for variable storage is called variables. Thus you can refer variables like this in either CFC or Template context:
a = "hello";
writeOutput( a );
or
writeOutput( variables.a );Persistence Scopes
Can be used in any context, used for persisting variables for a period of time.
session- stored in server RAM or external storages tracked by unique web visitorclient- stored in cookies, databases, or external storages (simple values only)application- stored in server RAM or external storage tracked by the running ColdFusion applicationcookie- stored in a visitor's browserserver- stored in server RAM for ANY application for that CFML instancerequest- stored in RAM for a specific user request ONLYcgi- read only scope provided by the servlet container and CFMLform- Variables submitted via HTTP postsURL- Variables incoming via HTTP GET operations or the incoming URL
Template Scopes (CFM)
variables- The default or implicit scope to which all variables are assigned.
Component Scopes (CFC)
variables- Private scope, visible internally to the CFC onlythis- Public scope, visible from the outside worldstatic- No need for a CFC instance; available as a CFC representation (Lucee only)
Function Scopes
variables- Has access to private variables within a Component or Pagethis- Has access to public variables within a Component or Pagelocal- Function-scoped variables only exist within the function execution. Referred to asvarscopingarguments- Incoming variables to a function
Tag Scopes
attributes- Incoming tag attributesvariables- The default scope for variable assignmentscaller- Used within a custom tag to set or read variables within the template that called it.
Thread Scopes
attributes- Passed variables via a threadthread- A thread-specific scope that can be used for storage and retrievallocal- Variables local to the thread context
Evaluating Unscoped Variables
If you use a variable name without a scope prefix, ColdFusion checks the scopes in the following order to find the variable:
Local (function-local, UDFs, and CFCs only)
Arguments
Thread local (inside threads only)
Query (not a true scope; variables in query loops)
Thread
Variables
CGI
CFFILE
URL
Form
Cookie
Client
Last updated
Was this helpful?
