Originariamente inviato da Santino83_02
Chiamalo come ti pare, ma almeno accetta le critiche. lo schema dice che il controller usa e istanzia e "manipola" oggetti di tipo model e view per mettere assieme tutto il pattern
come dicono gli stessi Dei di Zend:
le frecce tratteggiate indicano presumibilmente la chiamata di metodi sugli oggetti e il loro ritorno, come normalmente si effettua
c'è anche l'uso dell'observer come piu o meno dici te:
http://ootips.org/mvc-pattern.html
citato anche dagli stessi zendiani, solo che, come ti è stato detto prima, in un ambiente stateless è una scelta inutile. E cmq li si parla di observer tra view e model, in maniera da modificare il comportamento della view a seconda dello stato del model, non certo tra model e controller.
come dicono bene quelli di zend:
L'interazione tra model e controller è da evitare per il semplice fatto che così facendo leghi il controller col model in maniera molto forte, e probabilmente anche inutile, perchè basterebbe che il model torni un risultato di un'operazione invece di invocare eventi così, a buffo. Questo ti permette poi di poter utilizzare i model in maniera trasparente da qualsiasi altro oggetto, senza bisogno che tale oggetto si registri nel model o implementi un'interfaccia specifica. E soprattutto ti permette di giocare con i model senza legarti a nessuno in particolare.
Se tu vuoi fare un oggetto che NON SIA un controller ma che cmq lavori con dei model, ad esempio per incapsulare una logica di business molto complicata ma usata in molti punti del programma, che fai? devi fare un controller che non sia un controller o cose simili? implementare interfacce inutili? estendere (dio ce ne scampi) altre classi?
cioè lo puoi anche fare, per carità ognuno è genio e inventa i modi che gli tornano piu comodi, solo che quello non è mvc, non è codice disaccoppiato, controller e model fanno piu di quello che devono fare, in particolare il model, e il model è sostanzialmente inutilizzabile da oggetti che non implementano determinate interfacce, quando lo scopo del model è essere usato in maniera trasparente e senza fronzoli.