Table of Contents : Il manuale

CakePHP Conventions

Siamo dei grandi fan dell'utilizzo delle convenzioni rispetto a quello delle configurazioni. Nel mentre vi prenderà un po' di tempo imparare le convenzioni in uso su CakePHP, nel lungo periodo ne risparmieremo molto: seguendo le convenzioni, infatti, otterremo, gratuitamente l'accesso a molte funzionalità e vi sarete liberati dalla necessità di mantenere un incubo di file di configurazione. L'utilizzo delle convenzioni, inoltre, rende lo sviluppo molto uniforme, permettendo ad altri sviluppatori di unirsi e di collaborare molto più facilmente.

Le convenzioni di CakePHP sono il risultato della distillazione di anni di esperienza nello sviluppo del web e delle migliori pratiche. Nel mentre ve ne suggeriamo l'uso nello sviluppo con CakePHP, vogliamo anche segnalarvi che la maggior parte di esse possono essere facilmente aggirate - ciò è specialmente utile nella gestione di sistemy proprietari.

Convenzioni per i file e le classi

In generale, i nomi dei file sono in minuscolo, mentre i nomi delle classi sono del tipo CamelCased. Ad esempio: la classe KissesAndHugsController sarà rintracciabile nel file kisses_and_hugs_controller.php.

Il nome della classe contenuta in un file può tuttavia non essere così strettamente correlato al nome dello stesso. Ad esempio, la classe EmailComponent è contenuta un un file chiamato email.php e la classe HtmlHelper in un file chiamato html.php.

Model Conventions

I nomi per le classi dei modelli sono singolari e CamelCased. Person, BigPerson e ReallyBigPerson sono tutti esempi di nomi per modelli che rispettano queste convenzioni.

I nomi delle tabelle corrispondenti ai modelli CakePHP sono plurali e minuscoli. Le tabelle che implementano le classi sopra menzionate dovrebbero essere denominate rispettivamente: people, big_people e really_big_people.

I join tra le tabelle, utilizzate nella relazione hasAndBelongsToMany, dovrebbe essere denominati in accordo ai nomi delle tabelle che vanno ad unire, in ordine alfabetico (apples_zebras piuttosto che zebras_apples.) Se la vostra applicazione prevee questo tipo di relazioni tra i modelli Tag e Post, il nome della tabella di join corrispondente dovrebbe essere posts_tags.

Controller Conventions

I nomi per le classi dei controlle sono plurali, CamelCased e finiscono in 'Controller', PeopleController, BigPeopleController e ReallyBigPeopleController sono tutti esempi di nomi di controller che rispettano le convenzioni sui nomi.

La prima funzione che scrivete per un controller dovrebbe essere la funzione index(). Quando una richiesta specifica un controller ma non una azione, il comportamento di default di CakePHP è quello di renderizzare la funzione index() del controller stesso. Per esempio, una richiesta a http://www.example.com/apples/ mappa una chiamata alla funzione view() di ApplesController.

Potete anche cambiare la visibilità delle funzioni in CakePHP precedendo il nome della funzione stessa con il carattere di sottolineatura. Se una funzione in un controller è preceduta da un carattere di sottolineatura, la funzione non sarà raggiungibile, via-web attraverso il dispatcher, ma resterà comunque disponibile per uso interno.

View Conventions

I file per i template delle View vengono denominati in accordo alle funzioni del controller che verranno mostrate nella forma underscored. La funzione getReady() della classe PeopleController cercherà per un template per la vista in /app/views/people/get_ready.ctp.

Il pattern di base è /app/views/controller/underscored_function_name.ctp.

Denominando le parti della tua applicazione utilizzando le convenzioni di CakePHP, otterrete delle funzionalità senza il fastidio e la necessità di mantenere file di configurazione. Qui è riportato un esempio finale che tiene conto delle convenzioni

  • Database table: ‘people’
  • Model class: ‘Person’, found at /app/models/person.php
  • Controller class: ‘PeopleController’, found at /app/controllers/people_controller.php
  • View template, found at /app/views/people/index.ctp

Utilizzando queste convenzioni, CakePHP conosce che una richiesta a http://example.com/people/ deve essere mappata ad una chiamata alla funzione index() del Controller PeopleController, dove il modello Person è automaticamente disponibile (ed automaticamente legato alla tabella 'people' del database) e renderizzata su un file. Nessuna di queste relazioni è stata configurata in alcun modo, a parte la creazione delle classi e dei file, che avreste dovuto creare ad ogni modo.

Adesso che siete stati introdotti ai fondamenti di CakePHP, potete tentare di cimentarvi attraverso il tutorial CakePHP Blog, una appendice alla fine di questo manuale.