Hi,

On Sep 28, 2007, at 8:22 AM, Dami Laurent (PJ) wrote:



-----Message d'origine-----
De : Matt S Trout [mailto:[EMAIL PROTECTED]
Envoyé : jeudi, 27. septembre 2007 22:44

Don't confuse class -names- with the nature of classes.
MyApp::Model:: is
*adapters* that make a model available to MyApp, not where
your domain model
logic itself should live.

I usually these days have MyApp::Web for the catalyst app
instead of MyApp so
I can deploy things like MyApp::DataStore from a separate dir tree.


Makes a lot of sense to me. So the model can be used not only from the catalyst App, but also from batch jobs, command-line utilities, etc. And the Catalyst model *adapters*, as you call them, merely load the appropriate external modules, that's all.

But then comes a question about writing Catalyst code : which is best between a) and b) below ?

# a) go through the adapter for every method call
$c->model('Some::Model::Adapter')->do_stuff()

# b) directly call the external model after it's loaded
My::External::Model->do_stuff()

b) here exactly for the same reasons: i like having the same API when I'm using Cat or not.

Besides, most of my projects have two sites (frontoffice, backoffice) so I prefer to have the connection details outside the catalyst sites.

I never did use $c->model in my sites...

My colleague prefers a) because it's the usual, "oficial" Catalyst way, and because if we ever need some reverse interaction from the model to the controller, we can add stuff in the adapters, playing with ACCEPT_CONTEXT.

Callbacks work for me when I need to do this.

Best regards,
--
Pedro Melo
Blog: http://www.simplicidade.org/notes/
XMPP ID: [EMAIL PROTECTED]
Use XMPP!



_______________________________________________
List: Catalyst@lists.rawmode.org
Listinfo: http://lists.rawmode.org/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.rawmode.org/
Dev site: http://dev.catalyst.perl.org/

Reply via email to