This works... but don't do it.

I just ran across this little gem in some code I’m looking at. It works, but… I’m not sure I’d ever recommend actually doing it. I’ll show the code first, explain how it works, and then how I’d rewrite it. The following code was in a component, but I can demonstrate it with a simple CFM as well.

<cffunction name="test" output="true"> #test2()# </cffunction> <cffunction name="test2"> <cfset variables.iran="sofaraway"> </cffunction>

<cfset test()> <cfdump var=”#variables#”> </code>

Looks a bit odd, right? If you run this, you will actually see IRAN as one of the Variables. The output=”true” on test() evaluates the CFML inside the method. It would be the same as if I had done:

<cfoutput>#test2()#</cfoutput>

So that works, but, again, it’s a bit odd. I’d rewrite the method like so:

<cffunction name="test" output="false"> <cfset test2()> </cffunction>

It has the exact same effect, but, is a bit more direct. You can toggle output back on again and it won’t change a thing.

Raymond Camden's Picture

About Raymond Camden

Raymond is a developer advocate. He focuses on JavaScript, serverless and enterprise cat demos. If you like this article, please consider visiting my Amazon Wishlist or donating via PayPal to show your support. You can even buy me a coffee!

Lafayette, LA https://www.raymondcamden.com

Comments