I’m starting a a new application, and want to concentrate on making it modular. What I mean by that is that is that in my head I envisage some basic facilities log on, user roles, layouts etc but then I am looking to be able to be able to add self contained “chunks” of functionality e.g. document repository and upload, diary and reminder service .. whatever.
How I’ve been laying out apps so far is simply everything in root, separate subfolders for images and cfcs, sticking to naming conventions for variable and query names etc, all database interaction via cfcs, doing all my processing at the top of the page, then a comment line then display/page layout below that.
I have tried and failed to get my head around the various frameworks out there, but I just get paralysed with indecision and confused about whether I’m doing it “right”. Is there a way of working that has some acceptance of being a useful methodology without getting in to the whole official “framework” thing?
Honestly, the frameworks can lead to analysis paralysis quite easily. You can easily over think things. Here is what you do, keep it simple and just bang away at the keyboard. Use your “own” framework. It might not be pretty, but you’ll get it eventually and you’ll see why the other frameworks exist.
Here is how you start:
Create folders layouts and views. Put all your page layout stuff in the layouts folders (you’ll probably have only a few and maybe even one layout)! Put all of your view stuff in the views folder (this will probably look like what you’ve been doing with a bunch bunch of files not very well organized). The key is that you won’t have ANY page processing “top of page” code in your view files.
Your index.cfm will be the only .cfm root. Use a URL variable “event” = action to make your framework go.
In your index.cfm, use a giant cfswitch to determine which “top of page” code to execute (this will be a giant “controller”).
mysite.com/index.cfm?event=contactInfo
Combine this with the cfmodule tag to load your layout. So, all your page requests come in through index.cfm. Index.cfm will do all the top of page stuff and then do a cfinclude to the appropriate view in your views folder. Use the cfmodule tag to load your layout (check out the tag.execution mode stuff for headers and footers).
You’ll keep adding features and adding features to your framework. You’ll probably move the index.cfm code to a controller folder with a bunch of CFCs that call your database CFCs.