I'd suggest keeping gateways with objects or purposes, having a site-wide
one will certainly tend to grow to immense porpotions. This from a bad
experience following me around where I work. Also, IMHO, stay away from
application scoped cfc instances unless you really really need them. They
are a PITA when you need to update the code, most notably when you are in a
clustered environment.
DK
On 6/9/05, Chris Peters <[EMAIL PROTECTED]> wrote:
>
> If you want to use CFCs as an extra layer of abstraction though, create a
> Gateway.cfc for your whole application. Gateway.cfc should have all
> query-related operations in it, and most of the methods should return
> objects, arrays of objects, or simple string/numeric/etc. data. Load an
> instance of Gateway.cfc in your Application.cfm (or Application.cfc) as an
> application- or server-scoped variable so it only loads into memory once and
> is shared by all calling templates. Do it like this:
>
> <cfif not IsDefined('application.team')>
> <cfset application.team = CreateObject('component', 'path.to.Gateway')>
> </cfif>
>
> During development, it's helpful to comment out the <cfif not IsDefined>
> stuff as that causes the instance to "stick" in memory, even if you change
> the source of the CFC. This is good in production because CF doesn't need to
> rebuilt the unchanging instance for every page load.
>
> Let's say your entire application is for team management, so maybe you'd
> name the Gateway.cfc instance "application.team".
>
> Your call to application.team.getTeamMembers() would run a query to get
> all the data you need to build the objects you would put into the array.
> Loop through the query and build your objects as needed. The objects that
> get put into the array should have no queries built into them. Return the
> array of objects.
>
> Douglas's point of the queries being an abstraction in itself is also
> valid, but I mainly construct my code that way only if it's a smaller
> application. Keep in mind that the only way it is an abstraction is if you
> alias the field names, as in
>
> SELECT
> BL_ID AS blahID,
> BL_NAME AS blahName
> FROM ...
>
> Hope that helps.
>
>
> - Chris Peters
>
> >just create a CFC, teamGateway.cfc for example, that returns a query of
> your
> >team members. The query result is already an abstraction, use it.
> >
> >DK
> >
> >On 6/9/05, Cedric Villat <[EMAIL PROTECTED]> wrote:
> >>
>
>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Discover CFTicket - The leading ColdFusion Help Desk and Trouble
Ticket application
http://www.houseoffusion.com/banners/view.cfm?bannerid=48
Message: http://www.houseoffusion.com/lists.cfm/link=i:4:209150
Archives: http://www.houseoffusion.com/cf_lists/threads.cfm/4
Subscription: http://www.houseoffusion.com/lists.cfm/link=s:4
Unsubscribe:
http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=11502.10531.4
Donations & Support: http://www.houseoffusion.com/tiny.cfm/54