Slide 1

Slide 1 text

PHP Coding standard e-xtrategy lab

Slide 2

Slide 2 text

Coding standard Linee guida per la scrittura del codice necessarie 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

Slide 3

Slide 3 text

Perchè ? ● migliora la leggibilità ● migliora la manutenibilità ● aumenta l’interoperabilità (es: PSR-0) Questi aspetti sono molto importanti sia su progetti individuali che su progetti in team (opensource)

Slide 4

Slide 4 text

Come ? Viene definito un documento contenente tutte le regole 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

Slide 5

Slide 5 text

Nel PHP ? Uno sviluppatore si trova spesso a dover 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

Slide 6

Slide 6 text

Nel PHP ? Il Framework Interop Group ha proposto e 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.

Slide 7

Slide 7 text

Nel PHP ? Dovremmo scrivere codice che aderisce ad uno dei principali coding standard definiti in PHP: ● PSR-* ● PEAR ● ZEND

Slide 8

Slide 8 text

PSR-0 Descrive i requisiti necessari ai quali ci si deve uniformare per garantire l''interoperabilità tra gli autoloader Link al progetto su github

Slide 9

Slide 9 text

PSR-1 Definisce i requisiti base di coding standard per la scrittura del codice ● Nei file si DEVONO usare soltanto le tag

Slide 10

Slide 10 text

PSR-1 ● non vengono imposti vincoli per i nomi delle 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

Slide 11

Slide 11 text

PSR-2 Estende il PSR-1 coding standard Ridurre l'attrito cognitivo quando 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.

Slide 12

Slide 12 text

PSR-2 ● Il codice DEVE seguire il PSR-1. ● Il 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.

Slide 13

Slide 13 text

PSR-2 ● La graffe di apertura per le strutture di 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

Slide 14

Slide 14 text

PSR-3 Descrive un interfaccia comune per librerie di logging L’intento è quello di unificare operazioni di loggin sotto un interfaccia comune e condivisa tra librerie diverse Link al progetto su github

Slide 15

Slide 15 text

..e Drupal ? Ha un suo coding standard utilizzato per il core, moduli contrib e moduli custom Basato sul coding standard di PEAR https://drupal.org/coding-standards

Slide 16

Slide 16 text

Link utili PRS-* Coding Standard Fixer : imposta il codice 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.

Slide 17

Slide 17 text

Link utili Plugin Sublime text 2 per PSR-* Coding Standrd fixer PHPSTORM formatta di default il codice in PSR-1 PSR-2 Neatbeans si può configurare per il PSR-1 e PSR-2

Slide 18

Slide 18 text

Link utili Configurare netbeans per il drupal cs