Railo Tip: Implicit conversions

Following up with yesterday's post, there's one more gem in that old Railo documentation. Again, this has been around since Railo 2.0. We're going to make a new, yet similar example.

This time, we're going to create an address object:

address.cfc

<cfcomponent output="false">
<cffunction name="init" access="public" returntype="address" output="false">
<cfreturn this>
</cffunction>
<cffunction name="setStreet1" access="public" returntype="void" output="false">
<cfargument name="street" required="true" type="string" default="">
<cfif len(arguments.street)>
<cfset variables.street1 = arguments.street>
<cfelse>
<cfthrow message="Street 1 is required.">
</cfif>
</cffunction>
<cffunction name="setCity" access="public" returntype="void" output="false">
<cfargument name="city" required="true" type="string" default="">
<cfif len(arguments.city)>
<cfset variables.city = arguments.city>
<cfelse>
<cfthrow message="City is required.">
</cfif>
</cffunction>
<cffunction name="setState" access="public" returntype="void" output="false">
<cfargument name="state" required="true" type="string" default="">
<cfif len(arguments.state) EQ 2>
<cfset variables.state = arguments.state>
<cfelse>
<cfthrow message="State is required and must be a 2 character length.">
</cfif>
</cffunction>
<cffunction name="setPostalCode" access="public" returntype="void" output="false">
<cfargument name="postalcode" required="true" type="string" default="">
<cfif len(arguments.postalcode)>
<cfset variables.postalcode = arguments.postalcode>
<cfelse>
<cfthrow message="Postal Code is required.">
</cfif>
</cffunction>
<cffunction name="getStreet1" access="public" returntype="string" output="false">
<cfreturn variables.street1>
</cffunction>
<cffunction name="getCity" access="public" returntype="string" output="false">
<cfreturn variables.city>
</cffunction>
<cffunction name="getState" access="public" returntype="string" output="false">
<cfreturn variables.state>
</cffunction>
<cffunction name="getPostalCode" access="public" returntype="string" output="false">
<cfreturn variables.postalcode>
</cffunction>
<cffunction name="_toString" access="public" returntype="string" output="false">
<cfset var address = "">
<cfsavecontent variable="address"><cfoutput>#getStreet1()#<br />#getCity()#, #getState()# #getPostalCode()#</cfoutput></cfsavecontent>
<cfreturn address>
</cffunction>
</cfcomponent>
index.cfm

<cfset address = createObject('component','address').init()>
<cfset address.street1 = "Some Street">
<cfset address.city = "Some City">
<cfset address.state = "CA">
<cfset address.postalcode = "12345">
<cfoutput>#address#</cfoutput>

Now, in the address.cfc, note that we have a new function named "_toString" - This is a special conversion/function method name. There are other simple types available:

  • _toBoolean()
  • _toDate
  • _toNumeric
  • _toString

Now, let's look at the output of my address object (<cfoutput>#address#</cfoutput>):

Some Street
Some City, CA 12345

As you can see, the address object was converted to a string via the _toString function.

Update (July 27th) - This is now available on the Wiki

Comments (Comment Moderation is enabled. Your comment will not appear until approved.)
BlogCFC was created by Raymond Camden. This blog is running version 5.9.1.002. Contact Blog Owner