Concetti di base
Section 1
Introduzione
Questo capitolo è una breve e sommaria introduzione ai concetti MVC come sono stati implementati in Cake. Se non sei a conoscenza del pattern MVC (Model View Controller), è indispensabile che tu legga questo capitolo.
Cominceremo con la trattazione dei concetti generali del MVC ed andremo via via specificando come il MVC trova applicazione in CakePHP, verranno inoltre mostrati alcuni semplici esempi di come questo pattern sia implementato in CakePHP.
Section 2
Il Pattern MVC
Model-View-Controller (Modello-Vista-Controllore) è un pattern di progettazione del software che aiuta ad organizzare il codice in modo logico, rendendolo riusabile e manutenibile.
Il pattern Model-View-Controller fu descritto per la prima volta dalla famosa “Gang of Four”, in particolare Dean Helman scrisse:
"The MVC paradigm is a way of breaking an application, or even just a piece of an application's interface, into three parts: the model, the view, and the controller. MVC was originally developed to map the traditional input, processing, output roles into the GUI realm.
Input -> Processing -> Output
Controller -> Model -> View
"The user input, the modeling of the external world, and the visual feedback to the user are separated and handled by model, view port and controller objects. The controller interprets mouse and keyboard inputs from the user and maps these user actions into commands that are sent to the model and/or view port to effect the appropriate change. The model manages one or more data elements, responds to queries about its state, and responds to instructions to change state. The view port manages a rectangular area of the display and is responsible for presenting data to the user through a combination of graphics and text."
Per quanto riguarda Cake, il Model rappresenta una particolare tabella/record e le sue relazioni con altre tabelle e record, inoltre il modello contiene le regole di validazione dei dati che vengono applicate quando viene creato un nuovo modello o viene aggiornato uno esistente.
Le View sono rappresentate dai file che vengono utilizzati per visualizzare i dati, vengono rappresentate con normali file HTML annidati nel codice PHP.
Il Controller gestisce le richieste effettuate dal server, preleva l’input dell’utente (tramite i dati di URL e POST) affettua le elaborazioni richieste sui dati, usa il Model per leggere i dati e rispettivamente scrivere i dati sul database; infine manda i dati di output alla View di pertinenza.
Per rendere il più facile possibile del codice e della logica dell’applicazione chi si sta sviluppando, Cake usa il pattern MVC non solo per definire come gli oggetti interagiscono al’interno dell’applicazione, ma anche come deve essere organizzato il layout dei file che compongono l’aplicazione; questo verrà spiegato in dettaglio nella prossima sezione.
Section 3
Panoramica dei file di Cake
Se scompatti Cake sul tuo server vedrai tre cartelle principali:
Nella cartella cake ci sono le librerie fondamentali (core libraries) di Cake e generalmente non è necessario mettere mano al contenuto di questa cartella, la cartella app invece dovrà contenere i file della tua applicazione. La separazione fra le due cartelle app e cake consente di avere più cartelle app (quindi più applicazioni) che condividono lo stesso insieme di librerie di Cake. Ciò rende più facile l’aggiornamento di CakePHP, infatti basta effettuare il download della versione più recente di Cake e copiarla nella cartella cake sovrascrivendone il contenuto, l’applicazione invece rimane intatta e non richiede alcuna modifica.
La cartella vendors è invece destinata a contenere le librerie di terse parti (tutte quelle librerie che non sono core libraries di Cake). Più avanti verrà mostrato come utilizzare la cartella vendors, ma l’idea di base è rendere possibile l’accesso alle classi posizionate nella cartella vendors tramite l’apposita funzione di Cake vendor()
Vediamo com’è organizzato il path di Cake:
/app
/config - Contiene i file di configurazione del DB, ACL, etc.
/controllers - Qui si mettono i Controller
/components - Qui si mettono i Component
/index.php - Permette di accedere al contenuto /app come se fosse la DocumentRoot
/models - Qui si mettono i Model
/plugins - Qui si mettono i Plugins
/tmp - Usata come cache e per i log
/vendors - Contiene le librerie di terse parti (ma solo per la presente applicazione)
/views - Qui si mettono le View
/elements - Qui si mettono gli Element (piccole parti di View)
/errors - Pagine di errore personalizzate
/helpers - Qui si mettono gli Helper
/layouts - Qui si mettono i file per il layout dell’applicazione
/pages - Qui si mettono le viste statiche
/webroot - La DocumentRoot dell’applicazione
/css
/files
/img
/js
/cake - Librerie “core” di Cake, “non toccare”.
index.php
/vendors - Usata per le librerie di terze parti, ma non limitatamente ad una sola applicazione.
VERSION.txt - Versione di Cake attualmente in uso.
Last edited by simone (25-03-2008 20:53:49)