It's not about being "beaten to death" for doing something "wrong" -- just that doing this kind of introspection at runtime does not seem to scale terribly well. So, if your system is not concerned about scalability/performance as primary concerns (and we too often take for granted that those things are paramount when the reality is that most web apps don't actually need to scale or squeeze milliseconds) then don't worry about it, but do realize that it could become a concern.




Daniel Schmid wrote:
2. It adds to the metadata for a CFC
  This can be useful for documentation purposes or tools that depend
on introspection however I don't advise building systems that perform
dynamic introspection (at runtime) since they often don't scale very
well.


maybe I get beaten to death, but I heavily use <cfproperty> for instrospection on a CMS system (not Farcry, even if I know it does it as well)

my CFC content objects look like this...

<cfcomponent displayname="ArticleObject" hint="This is the article">
    <cfproperty name="title" type="string" default="New Article"/>
    <cfproperty name="subtitle" type="string" default="" />
     <cfproperty name="teaser" type="longchar" default="" />
    <cfproperty name="publishstart" type="date" default="" />

....

with getMetaData() I get all the properties and build a generic CRUD persistance layer around it. works since cf 6.0 like a charm...

the use of cfproperty makes it somehow easy - otherwise I would have to write properies down in a xml-file (like hibernate does)

regards
daniel  www.danielschmid.name



Sean Corfield schrieb:

On 11/7/05, Ung, Seng <[EMAIL PROTECTED]> wrote:
I am having a very tough time to understand what cfproperty does.


<cfproperty> does two things:

1. It describes public instance data in a CFC that is intended to be
the return type of a web service (or, in some cases, passed into a web
service).
  Since CFML is essentially a typeless language, the <cfproperty> tag
provides information needed by the web service libraries to map
between a CFC and a strongly typed structure. Really this is just a
way to provide structs in CFML that have enough information associated
with them (metadata) to allow interaction with strongly typed web
services.

2. It adds to the metadata for a CFC
  This can be useful for documentation purposes or tools that depend
on introspection however I don't advise building systems that perform
dynamic introspection (at runtime) since they often don't scale very
well.

In other words, most people actually won't need to use <cfproperty>.

If you're calling a web service that returns a strongly typed
structure containing two elements (C++ syntax):

struct Result {
  double amount;
  String currency;
}

The equivalent CFML code would be:

Result.cfc:
<cfcomponent>
  <cfproperty name="amount" type="numeric"/>
  <cfproperty name="currency" type="string"/>
</cfcomponent>

The returned object would be used like this:

<cfset result = ws.callMethod() />
<cfset amount = result.amount />
<cfset currency = result.currency />

(Caveat: all untested code off the top of my head - errors & omissions
excepted :)
--
Sean A Corfield -- http://corfield.org/
Got frameworks?

"If you're not annoying somebody, you're not really alive."
-- Margaret Atwood


----------------------------------------------------------
You are subscribed to cfcdev. To unsubscribe, send an email to cfcdev@cfczone.org with the words 'unsubscribe cfcdev' as the subject of the email.

CFCDev is run by CFCZone (www.cfczone.org) and supported by CFXHosting (www.cfxhosting.com).

An archive of the CFCDev list is available at www.mail-archive.com/cfcdev@cfczone.org






----------------------------------------------------------
You are subscribed to cfcdev. To unsubscribe, send an email to cfcdev@cfczone.org with the words 'unsubscribe cfcdev' as the subject of the email.

CFCDev is run by CFCZone (www.cfczone.org) and supported by CFXHosting (www.cfxhosting.com).

An archive of the CFCDev list is available at www.mail-archive.com/cfcdev@cfczone.org






----------------------------------------------------------
You are subscribed to cfcdev. To unsubscribe, send an email to 
cfcdev@cfczone.org with the words 'unsubscribe cfcdev' as the subject of the 
email.

CFCDev is run by CFCZone (www.cfczone.org) and supported by CFXHosting 
(www.cfxhosting.com).

An archive of the CFCDev list is available at 
www.mail-archive.com/cfcdev@cfczone.org


Reply via email to