Generating XML and Feeds should NOT be done with the model.  Those are
representations of the data, and should be done with in the  controller and
view layers.  The controller layer should determine which representation to
use by selecting the correct view, and the view should render the data.

--
A.J. Brown
Zend Certified PHP Engineer
WEB: http://ajbrown.org




Daniel Latter-2 wrote:
> 
> As a very loose, and general rule of of thumb the things that should  
> be part of your model would things like generating / creating XML  
> feeds , ie the code that does this, processing data you've got from a  
> database, ie to prepare the data so your app can more easily use it,  
> and generally things like that, basically it's the meat of your  
> application, the controllers would then use the model classes.
> 
> This is a very general description I've explained but I think it's a  
> good starting point.
> 
> 
> On Dec 11, 2008, at 18:56, Bill Karwin <b...@karwin.com> wrote:
> 
>>
>> On Dec 11, 2008, at 9:48 AM, Julian102 wrote:
>>
>>> Can anyone explain to me or show me somewhere that explains on a  
>>> very high
>>> level for a beginner how the model fits into a system and how one  
>>> should
>>> think about it when designing an application.
>>>
>>> For example should the model be designed at the same time the  
>>> database is
>>> designed?
>>
>> Not necessarily -- you design the Models as part of your object- 
>> oriented design for the application.  The database design is for  
>> persistence; it doesn't always map directly to your OO  
>> architecture.  As you've noticed, you could have a Model that uses  
>> multiple tables, and you might also use a given table in multiple  
>> Models.
>>
>> The Controller and the View have pretty specific roles in an MVC  
>> app, related to managing input and producing output respectively.   
>> The Model should be where everything else about your app is coded,  
>> and the database access is purely an internal implementation matter.
>>
>> Think of it this way:  suppose you're in a team and you're  
>> responsible for coding the Model, but you're not going to be the one  
>> coding the other parts of the app.  You need to publish your Model's  
>> interface to the other members of the team, and they'll call into it  
>> to fetch and save information managed by that Model.
>>
>> The problem is, you know from working with this team that they are  
>> untrustworthy bunglers (you suspect they are actually a troop of  
>> over-caffeinated chimpanzees banging on keyboards).  You're sure  
>> that they will abuse a Table's createRow() and update() and delete()  
>> methods, messing up data integrity if they are given the chance.   
>> They'll call fetchAll() with improper and inefficient queries.  And  
>> we won't even contemplate what they could do with getAdapter().
>>
>> So you can't trust them to use a Table class directly.  You need to  
>> make a Model class, that encapsulates the high-level things your  
>> Model can do, exposing _only_ those as task-oriented methods.   
>> Methods such as "createNewPost()" and "replyToPost()" and  
>> "countPostsInThread()" and "reportAbusivePost()."  You can use the  
>> Model class to make sure these high-level tasks are done correctly,  
>> no matter how incompetent the person who's using your interface is.   
>> The Model should encapsulate all the code and all the data needed to  
>> accomplish the work for a related set of tasks in your app.  Details  
>> of how data is stored in the database and how to query it should be  
>> known only to you.
>>
>> A few other resources:
>>
>> Esteemed ZF contributor Pádraic Brady posted a great blog article re 
>> cently called "The M in MVC: Why Models are Misunderstood and Unappr 
>> eciated."
>>
>> A free online resource is S. Lott's book, "Building Skills in OO  
>> Design."
>>
>> Craig Larman's book "Applying UML & Patterns: Introduction to Object- 
>> Oriented Analysis & Design, & Iterative Development" talks about  
>> "assignment of responsibilities" which helps you decide what code  
>> goes in what class.  That's a good in-depth resource to read more  
>> about the process of OO design.
>>
>> Regards,
>> Bill Karwin
> 
> 


-----
Regards,

A.J. Brown
Zend Certified PHP Engineer
http://ajbrown.me
-- 
View this message in context: 
http://www.nabble.com/Newbie-quesiton---How-do-queries-that-join-multiple-tables-fit-into-the-model-in-the-MVC-tp20919944p20985372.html
Sent from the Zend Framework mailing list archive at Nabble.com.

Reply via email to