16

Click here to load reader

pugBO #10 PSR e Composer

Embed Size (px)

Citation preview

Page 1: pugBO #10 PSR e Composer

pugBO #10 PSR e ComposerDavide Bellettini

http://twitter.com/SbiellONEhttp://it.linkedin.com/in/davidebellettini/http://www.davidebellettini.com/

Page 2: pugBO #10 PSR e Composer

Standard PSR: perché● Gli sviluppatori dei framework PHP

sentivano l'esigenza di uniformità tra gli standard

● Nasce il Framework Interop Group● Diversi livelli di standardizzazione

○ PSR-0, PSR-1, PSR-2, PSR-3● Ogni livello include le regole del livello

inferiore, tranne PSR-3● Strumenti automatici di verifica (PHP-CS-

Fixer)

Page 3: pugBO #10 PSR e Composer

Gli standard 1/3Le regole standardizzano:● PSR-0: il nome dei file deve rispecchiare

quello delle classi Vendor\Hello\Ciao diventa Vendor/Hello/Ciao.php

● PSR-1○ Tag di apertura e di chiusura: <?php, ?>, <?=$a?>○ Un file può contenere o dichiarazioni o side-effects,

non entrambi○ La codifica dei file UTF-8 (no BOM)○ Nomi delle classi, costanti e metodi

Page 4: pugBO #10 PSR e Composer

Gli standard 2/3● PSR-2

○ Una riga di codice dovrebbe essere meno di 80 colonne, se più di 120 viene dato un warning

○ L'indentazione: 4 spazi, no tab, quando indentare○ A capo con Line Feed○ Quando mandare a capo le graffe, a capo nelle

definizioni di classi e metodi ecc○ Spaziatura nella lista argomenti, a capo, ecc○ Niente spazi a fine riga○ niente ?> nei file contenenti solo PHP○ true, false, null sempre in minuscolo○ vietato usare var○ ordine delle parole public, final, abstract, static

Page 5: pugBO #10 PSR e Composer

Gli standard 3/3● PSR-3 (standardizzazione dei logger)

○ Psr\Log\LoggerInterface■ definisce i classici metodi del logger: (debug,

info, notice, warning, error, critical, alert, emergency).

○ LoggerAwareInterface: setLogger○ LogLevel: costanti per i vari livelli di log

Page 6: pugBO #10 PSR e Composer

Composer: a cosa serve?Composer è un sistema open source di gestione delle dipendenze per PHP che gestisce:● l'installazione e l'aggiornamento le librerie

PHP pubblicate sul sito packagist.org● il caricamento delle classi secondo lo

standard PSR-0● i vincoli sul numero di versione e stabilità

Page 7: pugBO #10 PSR e Composer

Il perché del successo● Descrittore facile da scrivere● Rapidamente adottato da progetti importanti

del mondo PHP● Evita la noia dei git submodules / svn

externals● Gestisce le dipendenze transitive e i conflitti● Grazie allo standard PSR-0 viene fornito di

autoloader● Più semplice da usare rispetto a PEAR

Page 8: pugBO #10 PSR e Composer

Alcuni progetti● Drupal 8● Tutti i prodotti Sensio (Symfony 2.1, Twig,

Silex, ...)● Doctrine● Smarty● UniversiBO● Zend Framework● ...● Sempre in aumento!

Page 9: pugBO #10 PSR e Composer

I file in gioco● composer.phar: l'archivio contenente il

codice PHP dell'applicazione composer● composer.json: il descrittore dove inserire

le informazioni del progetto (nome, sviluppatori, dipendenze, ecc)

● composer.lock: file gestito da composer che tiene traccia delle versioni delle librerie installate, è consigliabile metterlo sotto controllo di versione

● vendor/autoload.php: class loader

Page 10: pugBO #10 PSR e Composer

Esempio di file composer"require": { "php": ">=5.3.3", "symfony/symfony": "2.1.*", "doctrine/orm": ">=2.2.3,<2.4-dev", "doctrine/doctrine-bundle": "1.0.*", "twig/extensions": "1.0.*", ...}

Page 11: pugBO #10 PSR e Composer

Ma la libreria XYZ......non è su packagist.org!

Nessun problema! È sufficiente conoscere l'url dell'archivio zip da scaricare.

http://getcomposer.org/doc/04-schema.md#repositories

Page 12: pugBO #10 PSR e Composer

Ma la libreria XYZ...... è su un repository PEAR

Nessun problema! Composer installa anche da PEAR

http://getcomposer.org/doc/04-schema.md#repositories

Page 13: pugBO #10 PSR e Composer

Non voglio pubblicare...... le mie librerie, non voglio che siano Open Source!

No problem! Packagist è software libero (MIT) e puoi installarne una copia, oppure generare un repository con Satis!

Page 14: pugBO #10 PSR e Composer

In praticaScaricamento del pharcurl -s https://getcomposer.org/installer | php

Creazione di un nuovo composer.json passo passo: php composer.phar init

Aggiornamento delle dipendenzephp composer.phar update

Installazione a partire da composer.lockphp composer.phar install

Page 16: pugBO #10 PSR e Composer

Birra

● Tennent's● La Frasca● Master Beer 0 °C ?