Scegliere un framework non è cosa semplice. Il panorama odierno ci fornisce molti strumenti da utilizzare e tra questi troviamo CakePHP.

CakePHP ha tantissime funzionalità e verranno analizzate con calma negli articoli futuri di questo blog.

Qui ci focalizziamo su alcuni punti chiave che spesso passano inosservati al primo approccio con un nuovo framework. Ecco perché amiamo CakePHP  rispetto ad altri Framework PHP (es: YII, Codeigniter, Zend, Kohana etc…).

 

Un po’ di storia di CakePHP

CakePHP nasce nel lontano 2005 portando un progetto ambizioso e senza uguali nel mondo dello sviluppo PHP.

Parliamo infatti di un progetto nato sotto la release 4 di PHP. Questo fa di CakePHP uno dei framework più vecchi e longevi del panorama di sviluppo PHP.

 

Le Convenzioni di CakePHP

È sempre stata la caratteristica del CakePHP: Utilizzare delle convenzioni forti per una creazione rapida e consistente dei progetti.

CakePHP è fortemente ispirato a Ruby on Rails e, come quest’ultimo, aderisce fortemente alla filosofia “convenzione anziché configurazione”

Questo consente a qualsiasi sviluppatore di occuparsi dello sviluppo applicazioni CakePHP al posto di pensare a “dove” mettere le cose.

Questi convenzioni così forti sono in netto contrasto con la filosofia liberale del linguaggio PHP. Ma grazie a questi paletti il framework assicura una consistenza elevata nello stile di sviluppo attraverso diversi Developer CakePHP e diversi Team CakePHP.

La consistenza e le convenzioni si estendono anche al Database.

 

Per velocizzare lo sviluppo il framework utilizza dei default nella nomenclatura dei file, classi, variabili, tabelle e campi.

Per esempio le tabelle devono essere nominate in plurale del modello (es: Moello “Article” tabella “articles”)

la primary key sarà sempre “id”

Le chiavi relazionate saranno il nome singolare della tabella relazionata (es: article per articles) seguito da “_id” (es: article_id).

Per fare un esempio breve vediamo i due modelli utilizzati sopra (Article e Comment).

Utilizzando questi due modelli CakePHP andrà a cercare la tabella “articles” per il modello Article e la tabella “comments” per il modello Comment.

Inoltre è a conoscenza del fatto che nella tabella comments sarà presente un campo “article_id“.

Ecco quindi le nostre due tabelle

CakePHP-schema-articles-comments

Nelle tabelle abbiamo aggiunto il campo “title” per la tabella articles ed il campo “comment” per la tabella Comments. Questi due campi sono solo fittizi e servono solo per dare un senso di funzionamento dell’applicazione.

Queste sono le query per creare le tabelle

Infine vediamo come è possibile cambiare il campo utilizzato per le relazioni.

Con questa modifica CakePHP cercherà un campo “post_id” per le relazioni.

Naturalmente questa pratica è sconsigliata se non c’è una necessità in particolare.

Qui abbiamo utilizzato la relazione hasMany e belongsTo (uno a molti). Puoi approfondire l’argomento nella serie Tutorial Italiano Relazioni CakePHP.

 

Per ulteriori informazioni sulle convenzioni CakePHP vi rimando al nostro articolo approfondito.

Anche se molti developer php preferiscono più libertà con framework diversi e strumenti come Yii e CodeIgniter le convenzioni di CakePHP ci possono portare un vantaggio netto nello startup di un progetto CakePHP e nella manutenzione del codice. In particolare se il codice passa tra le mani di diversi team di sviluppo e Developer CakePHP le convenzioni  ci aiuteranno a comprendere il progetto.

 

Supporto

CakePHP ha una comunità molto attiva e si può ottenere supporto ed informazioni in diverse maniere.

Attraverso il sito ufficiale, il bakery, irc, gruppi su googlegroups e stackoverflow si può ottenere un aiuto veloce. Su github troviamo invece molti plugin, component e behaviour per CakePHP.

Da non dimenticare naturalmente il nostro sito!

 

Scaffolding

Lo scaffolding è uno strumento utilissimo per testare le relazioni e l’interazione dei nostri dati.

Vediamo come utilizzarlo sfruttando i due modelli (article, comment) che abbiamo creato prima.

È sufficiente dichiarare la variabile pubblica $scaffold per attivare un sistema automatico di CRUD.

Visitando ora l’indirizzo /articles troveremo la nostra interfaccia pronta per testare il database.

ATTENZIONE

NON UTILIZZARE IN PRODUZIONE!

Validazione

La validazione CakePHP è uno strumento eccellente.

Le validazioni vanno inserite nel Model. Vediamo un esempio utilizzando il modello Article.

In questo esempio rendiamo obbligatorio il campo “title” restituendo un messaggio in caso di errore “inserire un titolo”.

CakePHP si occuperà di eseguire il controllo ad ogni inserimento o modifica di un nuovo recorrd nella tabella “articles”.

 

Bake

Il bake è una utility di console che si occupa di “cucinare” le nostre ricette partendo dal database.

Lanciando un comando di console è possibile generare i Controller, Model e view CRUD di base.

Il comando è il seguente

Seguendo le istruzioni a video ed utilizzando lo schema di “articles” e “comments” otteniamo i seguenti files:

  • /app/Controller/ArticlesController.php
  • /app/Model/Article.php
  • /app/View/Articles/index.ctp
  • /app/View/Articles/add.ctp
  • /app/View/Articles/edit.ctp
  • /app/View/Articles/delete.ctp
  • /app/Controller/CommentsController.php
  • /app/Model/Comment.php
  • /app/View/Comments/index.ctp
  • /app/View/Comments/add.ctp
  • /app/View/Comments/edit.ctp
  • /app/View/Comments/delete.ctp

 

Facilità di utilizzo

CakePHP ha una curva di apprendimento relativamente semplice anche se è uno strumento molto complesso. Grazie agli standard imposti è consigliato in particolar modo a chi approda per la prima volta in un framework o in quei team dove c’è bisogno di una struttura standard per semplificare il lavoro.

 

Conclusione

CakePHP ha tantissime funzionalità e quelle mostrate in questo articolo sono delle funzionalità che passano in secondo piano ma sono tra le cose che aiutano a sviluppare velocemente un’applicazione.

Negli articoli futuri seguiremo dei tutorial dove il lato di sviluppo veloce sarà più evidente.

Attendo il profumo delle vostre torte!

Seguimi

Walter Raponi

Appassionato di torte!

Ingredienti base: Model, View, Controller! Un grande framework come CakePHP e la nostra torta è pronta!
Seguimi

Latest posts by Walter Raponi (see all)