http://www.symfony-project.com/tutor...t_project.html
Symfony si basa su MVC ed il succo del discorso è il seguente:
Model
definisci un modello, cosa ti aspetti che accada, quali sono le informazioni utili e/o da gestire ed altor ancora
codice:
methods:
post: [author, email, body]
get: [author, email, body]
fillin:
enabled: on
names:
author:
required: Yes
required_msg: The name field cannot be left blank
email:
required: No
validators: emailValidator
body:
required: Yes
required_msg: The text field cannot be left blank
emailValidator:
class: sfEmailValidator
param:
email_error: The email address is not valid.
Controller
Crei le classi, i metodi o quello che vuoi per gestire le informazioni, fare operazioni nel DB, manipolare i risultati, gestire errori ed eccezioni
Codice PHP:
public function executeUpdate ()
{
if (!$this->getRequestParameter('id', 0))
{
$comment = new Comment();
}
else
{
$comment = CommentPeer::retrieveByPk($this->getRequestParameter('id'));
$this->forward404Unless($comment);
}
$comment->setId($this->getRequestParameter('id'));
$comment->setPostId($this->getRequestParameter('post_id'));
$comment->setAuthor($this->getRequestParameter('author'));
$comment->setEmail($this->getRequestParameter('email'));
$comment->setBody($this->getRequestParameter('body'));
$comment->save();
return $this->redirect('post/show?id='.$comment->getPostId());
}
View
in base alle informazioni inviate dal controller, trasformi "la vista" dell'utente (nel caso di Synfony l'html) per mostrargliele in una interfaccia (UI)
Codice PHP:
<?php if ($sf_params->has('post_id')): ?>
<?php echo input_hidden_tag('post_id',$sf_params->get('post_id')) ?>
<?php else: ?>
<tr>
<th>Post*:</th>
<td><?php echo object_select_tag($comment, 'getPostId', array('related_class' => 'Post')) ?></td>
</tr>
<?php endif; ?>
Questo nella maggiorparte dei frameworks PHP ed a grandi linee quello accade anche in RoR ... di fatto le migliori implementazioni stanno nel mondo Java, Python, ed ultimamente .NET
La trasformazione di un layout in place, implica l'uso del controller (o chiamate allo stesso) dentro la UI, mentre alcuni sistemi più articolati (cocoon ed altri ancora) non sfruttano mezza linea di server per trasformare le informazioni, compito dell'apposito XSLT o nella migliore delle ipotesi (IMHO) del linguaggio client (JavaScript) grazie all'aiuto dell'impaginatore (CSS) ... quindi ogni cosa sta al suo posto 
[edit]
perchè si usa tanto ... pechè va di moda dire MVC, perchè è giusto definire i compiti tra tecnologie differenti, perchè in un ambiente multi sviluppatori ognuno dovrebbe essere in grado di svolgere la sua atività senza avere idea di cosa accada dall'altra parte, che sia l'ideatore dell'interfaccia, il designer del modello o lo sviluppatore server / client addetto ad altro.
Il Web, tramite abbastanza scomodo per far si che questo concetto non sia solo un'utopia, basato su vecchi standard e protocolli "armati" in ogni dove per le nuove esigenze, rende questa separazione ai limiti del fattibile ... perchè il controller deve gestire le informazioni per una view capace di gestirle, la view deve sapere cosa riceve dal server per poterlo gestire ed il model non è mai abbastanza intelligente da capire tutte le varie ed eventuali implementazioni da schiaffare in controller e view 
dimenticavo, ovviamente tutto questo post gira sotto il © imho