This is KEY! Event handlers in ColdBox are cached by default so no unnecessary object creations occur. Therefore, your code within the event handler functions MUST be thread safe and var scoped. This is essential and key for ANY framework or ANY ColdFusion Component declaration, ALWAYS ALWAYS var scope. I cannot stress the importance of having to var scope your ColdFusion component method calls. I see this time and time again and we need to educated ourselves about it and also create a habit of ALWAYS var scoping our variables within function declarations. What do you think?
Blog
This is KEY! Event handlers in ColdBox are cached by default so no unnecessary object creations occur. Therefore, your code within the event handler functions MUST be thread safe and var scoped. This is essential and key for ANY framework or ANY ColdFusion Component declaration, ALWAYS ALWAYS var scope. I cannot stress the importance of having to var scope your ColdFusion component method calls. I see this time and time again and we need to educated ourselves about it and also create a habit of ALWAYS var scoping our variables within function declarations. What do you think?
Recent Entries
Announcing BX-WORD: Native Microsoft Word Automation for BoxLang
Every enterprise runs on Word documents. Contracts. RFPs. Proposals. Board reports. Offer letters. HR handbooks. Compliance policies. Invoices. Statements of work. Legal memos.
BoxLang 1.15.0 Released: Blazing Fast Strings, Runtime Portability, and much more
BoxLang 1.15.0 is a high-impact release with two big headlines and a long tail of hardening. The first headline is a massive performance upgrade to string handling: a new first-class BoxStringBuilder type, compile-time literal folding, smarter &= semantics, and a runtime concat strategy that automatically switches to builder-backed accumulation once your expression gets big enough. Your existing string-heavy code just got faster. No rewrites required.
MatchBox Web Server: BoxLang Without the Full Server Stack
MatchBox includes a native web runtime for building small, fast BoxLang web applications without requiring a JVM or a traditional servlet container. You can follow the MatchBox open beta at https://github.com/ortus-boxlang/matchbox. There are two related pieces in the beta today: a webroot server for .bxm templates and static assets, and a routed app server built around web.server(). Both are early, but they show the direction clearly: BoxLang should be able to serve HTTP from a compact native runtime when the application does not need the full JVM stack.
Add Your Comment
(3)
Sep 24, 2010 17:49:38 UTC
by Adrian J. Moreno
A few links with more information on var scoping:
My blog:
http://www.iknowkungfoo.com/blog/index.cfm/2007/8/22/Object-Oriented-Coldfusion--4--The-var-scope
Dave Shuck:
http://daveshuck.instantspot.com/blog/2006/11/28/Thread-safety-example--Var-scope-your-loop-index-in-ColdFusion-CFCs
Tyson Vanek:
http://www.webapper.net/index.cfm/2007/2/9/The-REAL-reason-you-need-to-varscope-your-local-CFC-function-variables
Sep 30, 2010 10:28:54 UTC
by Allen
Not to be trite but the var keyword is a keyword, not a scope. Most of know that but I'd hate to see a newbie get confused.
Do you have some example code for a handler or controller that would help illustrate this?
And is there any reason if we're running CF9 why we shouldn't use the local scope in these situations?
TIA!
Sep 30, 2010 10:35:10 UTC
by Luis Majano
@Allen,
In cf9 you don't have to var scope if you use the local scope as that puts the variables in the local function scope. To me that is a matter of preference, like what color you like? They both achieve the same results.
Some example handler code of NOT var scoping:
function doThis(event){
rc = event.getCollection();
rc.data = service.getData();
}