Quale IDE per Cakephp, parte 2

La ricerca della chimera. Non esiste un’IDE preferenziale per cakephp. Anche perché l’approccio convention over configuration rende l’uso di una ambiente di sviluppo integrato non strettamente necessario.
Con un po’ d’esperienza basta un buon editor. Però l’IDE aiuta.. parecchio. Autocompletamento, suggerimento del codice, firma delle funzioni, ereditarietà, eccetera eccetera.

I framework come cake sono di solito una brutta bestia per le IDE, proprio a casua dell’approccio basato sulel convenzioni. Che il programmatore conosce – gli semplificano la vita. Ma l’IDE non può sapere, ad esmepio, che PostsController ha una proprietà Post, che è istanza del modello Post. non c’è alcuna dichiarazione esplicita, essendo il framework nei suoi meandri che automatizza queste cose per noi.
Le IDE in genere utilizzano varianti di tre approcci per affrontare la cosa.

1) Prendo tutto, poi decidi tu

2) Analizzo il codice.. (e un po’ tiro a indovinare)

3)  Un aiutino?..

4) Qualche configurazione / plugin / supporto specifico

Ovviamente semplifico, di solito è un misto di questi – come, mi pare, per i due colossi: Netbeans e Eclipse PDT / Zend Studio.
Le due maggiori IDE open source, multipiattaforma e multilinguaggio, mantengono probabilmente in modo meritato la maggiore diffusione.

Netbeans utilizza bene isuggeriemnti (approccio 2) che lo stesso programmatore può includere all’interno di blocchi phpDocs

/**

* @property Post Post

*/

all’interno della classe PostsController suggerisce all’IDE che la proprietà Post corrisponde alla classe Post (il nostro modello).

Così, scrivendo $this->Post->.., netbeans potrà suggerisrci i metodi e le proprietà del modello Post (e tutto il ben di dio delle classi progenitrici, AppModel, Model..)

Zend Studio invece si comporta molto bene con l’analisi delle ereditarietà, soprattuto se c’è qualche simpatico trucchetto per esplicitarla (grazie ad EuroMark).

Poi ci sono gli outsider – ide più specilazzate su php, come phpDesigner 7 – che, in mancanza d’altro, utilizza l’approccio 1: suggerisce al programmatore tutto quello che potrebbe avere una qualche relazione con quello che stra scrivendo.  Mentre, in varia misura, netbeans e zend studio fanno qualche check di prossimità per ipotizzare quale sia la classe parent più probabile, phpdesigner suggerisce tutto quello che sa: $this->Post->del[..] fa si che l’IDE ci suggerisca tutti i metodi delete che esistono nel progetto. Quello del nostro modello, ma anche di tutte le altre classi (della nostar applicazione o del core di cake) che abbiano un metodo omonimo. E non sono poche..

Sul piano dei pacchetti specifici.. nulla all’orizzonte. C’è codeLobster, un editor leggero, che ha un plugin specifico per cake: ma aggiunge semplicemente il code suggest per behaviours, helpers e components di cake. Nulla riguardo al codice scritto da noi.

Dunque? Al momento resto con Zend Studio e Netbeans. Il primo lo prefersico per la programmazione della logica, il secondo per la parte di presentazione; perché mi sembra funzioni meglio Zend Studio nell’analizzare il codice a livello di modello e controller, mentre per le viste (e per html, css, javascript / jquery) mi sembra si comporti meglio Netbeans.

Stanno però crescendo le ide più leggere e specializzate. Oltre al già citato phpDesigner 7, penalizzato da qualche sbavatura e bug di troppo (a cominciare dall’FTP integrato, che al momento proprio non è utilizzabile), ci sono delle new entry molto interessanti come PhpStorm – l’ho provato poco, ma devo dire che è veramente piacevole da usare: leggero, chiaro, ben rifinito, con ottima integrazione dei linguaggi accessori.

Come impressione personale, potenzialmente l’esperienza migliore finora. Da l’impressione di poter essere l’IDE migliore, quella che si mette al tuo servizio, essendoci quando serve -in modo naturale – e senza mettersi in mezzo quando non dovrebbe.

Unica, grossa pecca che lo rende inutilizabile con cake: al momento, nell’analizzare il codice del porgetto (e delle librerie incluse) va in palla se esistono più classi con lo stesso nome (cosa che in cake è lo standard – si pensi ad AppController..).  Purtroppo la risoluzione di questo bug è stata posticipata (ahi!) alla versione 3.

Se risolvessero questo probelma, penso che avremmo un serio candidato al titolo di miglior IDE per cakephp, ed avrebbero un ottimo “selling point”. O, almeno, io lo acquisterei immediatamente, visto anche il costo ragionevole della licenza.