Le convenzioni di cakePHP

File e 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 in un file chiamato email.php e la classe HtmlHelper in un file chiamato html.php.

Model e database
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.).
Tutte le tabelle con le quali CakePHP interagisce (con l'eccezione di tabelle join), richiedono una singola chiave primaria per identificare ogni riga. Se desideri utilizzare una tabella che non ha un singolo campo come chiave primaria, come le righe della post_tags tabella join, la convenzione di CakePHP è che un singolo campo di chiave primaria è aggiunto alla tabella.
CakePHP non supporta chiavi primarie complesse.
Nell'evento in cui vuoi direttamente manipolare i dati joinando delle tabelle, bisogna utilizzare direttamente la chiamata query, o aggiungere un campo di chiave primaria per usarlo come un normale model. E.g.:

CREATE TABLE posts_tags (
id INT(10) NOT NULL AUTO_INCREMENT,
post_id INT(10) NOT NULL,
tag_id INT(10) NOT NULL,
PRIMARY KEY(id));

Controller
I nomi per le classi dei controlle sono plurali, CamelCased e finiscono in Controller, PeopleController e LatestArticlesController 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 mappa una chiamata alla funzione index() di ApplesController, mentre 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, ma resterà comunque disponibile per uso interno.

View
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à il 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 vostra 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:

Utilizzando queste convenzioni, CakePHP conosce che una richiesta 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.





indietro - avanti