per garantire un alto livello di interoperabilità Fanno riferimento ad aspetti del codice quali: convenzioni sui nomi, organizzazione dei blocchi di codice, commenti, indentazione, strutture di controllo, ecc
da seguire Non importa cosa ci sia scritto nel documento, l’importante è che sia condiviso Le regole non vengono applicate dai compilatori quindi il software può funzionare anche senza l’applicazione del coding standard
scegliere e combinare framework e librerie in un singolo progetto. E’ importante che il codice PHP aderisca ad un coding standard che faciliti la vita a chi sviluppa Aderire ad un coding standard significa rendere più facile la vita dello sviluppatore
approvato una serie di linee guida conosciute come PSR-0, PSR-1, PSR-2 e PSR-3 (PHP Specification Request). Sono semplicemente delle linee guida che progetti importanti come Drupal, Zend, Symfony, CakePHP, phpBB, AWS SDK, FuelPHP, Lithium, ecc stanno adottando.
scrittura del codice • Nei file si DEVONO usare soltanto le tag <?php o <?=. • I file DEVONO usare soltanto UTF-8 senza BOM per il codice PHP. • I file DOVREBBERO o dichiarare i simboli (classi, funzioni, costanti, etc.) o causare effetti collaterali (es. generare output, cambiare le impostazioni .ini, etc.) ma NON DOVREBBERO fare entrambe le cose. • I namespace e i nomi delle classi DEVONO seguire il PSR-0. • I nomi delle classi DEVONO essere dichiarati in StudlyCaps. • Le costanti di classe DEVONO essere dichiarate tutte maiuscole con underscore come separatore. • I nomi dei metodi DEVONO essere dichiarati in camelCase.
proprietà. Qualsiasi sia la convenzione usata per i nomi, questa DOVREBBE essere applicata in modo consistente ad un livello ragionevole di visibilità. La visibilità potrebbe essere a livello di vendor, di pacchetto, di classe o di metodo Link al progetto su github
il codice viene esaminato da diversi autori. Tutto questo è ottenuto grazie ad una serie di regole e aspettative condivise su come formattare il codice PHP.
codice DEVE usare 4 spazi per l'indentazione, non le tabulazioni. • NON DEVE esserci un limite rigido alla lunghezza della riga; il limite debole DEVE essere di 120 caratteri; le righe DOVREBBERO essere di 80 caratteri o meno. • DEVE esserci una riga vuota dopo la dichiarazione del namespace, e DEVE esserci una riga vuota dopo il blocco delle dichiarazioni use. • La graffa di apertura per le classi DEVE andare sulla riga seguente, e la graffa di chiusura DEVE andare su una nuova riga dopo il corpo. • La graffa di apertura per i metodi DEVE andare sulla riga seguente, e la graffa di chiusura DEVE andare su una nuova riga dopo il corpo. • La visibilità DEVE essere dichiarata su tutte le proprietà e i metodi; abstract e final DEVONO essere dichiarate prima della visibilità; static DEVE essere dichiarata dopo la visibilità. • Le keyword delle strutture di controllo DEVONO avere uno spazio a seguire (es: if (qualcosa) { .. } ); i metodi e le chiamate a funzioni NON DEVONO.
controllo DEVONO andare sulla stessa riga, e le graffe di chiusura DEVONO andare su una nuova riga dopo il corpo. • Le parentesi di apertura per le strutture di controllo NON DEVONO avere uno spazio a seguire, e le parentesi di chiusura per le strutture di controllo NON DEVONO avere uno spazio a precedere. Link al progetto su github
al livello PSR-* desiderato Code Sniffer : analizza i file sorgenti riportando eventuali violazioni dello standard. I coding standard di default sono PEAR, Zend. Permette di scrivere estensioni per analizzare il codice con altri standard.