pugBO #10 PSR e Composer

1,164 views

Published on

Published in: Economy & Finance
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,164
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

pugBO #10 PSR e Composer

  1. 1. pugBO #10 PSRe ComposerDavide Bellettinihttp://twitter.com/SbiellONEhttp://it.linkedin.com/in/davidebellettini/http://www.davidebellettini.com/
  2. 2. Standard PSR: perché● Gli sviluppatori dei framework PHP sentivano lesigenza 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)
  3. 3. Gli standard 1/3Le regole standardizzano:● PSR-0: il nome dei file deve rispecchiare quello delle classi VendorHelloCiao 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
  4. 4. Gli standard 2/3● PSR-2 ○ Una riga di codice dovrebbe essere meno di 80 colonne, se più di 120 viene dato un warning ○ Lindentazione: 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
  5. 5. Gli standard 3/3● PSR-3 (standardizzazione dei logger) ○ PsrLogLoggerInterface ■ definisce i classici metodi del logger: (debug, info, notice, warning, error, critical, alert, emergency). ○ LoggerAwareInterface: setLogger ○ LogLevel: costanti per i vari livelli di log
  6. 6. Composer: a cosa serve?Composer è un sistema open source digestione delle dipendenze per PHP chegestisce:● linstallazione e laggiornamento 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à
  7. 7. 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
  8. 8. Alcuni progetti● Drupal 8● Tutti i prodotti Sensio (Symfony 2.1, Twig, Silex, ...)● Doctrine● Smarty● UniversiBO● Zend Framework● ...● Sempre in aumento!
  9. 9. I file in gioco● composer.phar: larchivio contenente il codice PHP dellapplicazione 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
  10. 10. 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.*", ...}
  11. 11. Ma la libreria XYZ......non è su packagist.org!Nessun problema! È sufficiente conoscere lurldellarchivio zip da scaricare.http://getcomposer.org/doc/04-schema.md#repositories
  12. 12. Ma la libreria XYZ...... è su un repository PEARNessun problema! Composer installa anche daPEARhttp://getcomposer.org/doc/04-schema.md#repositories
  13. 13. Non voglio pubblicare...... le mie librerie, non voglio che siano OpenSource!No problem! Packagist è software libero (MIT)e puoi installarne una copia, oppure generareun repository con Satis!
  14. 14. In praticaScaricamento del pharcurl -s https://getcomposer.org/installer |phpCreazione di un nuovo composer.json passopasso: php composer.phar initAggiornamento delle dipendenzephp composer.phar updateInstallazione a partire da composer.lockphp composer.phar install
  15. 15. Alcuni esempi concretiAlcuni composer.json di progetti reali.https://github.com/UniversiBO/UniversiBO/blob/master/composer.jsonhttps://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/composer.jsonhttps://github.com/symfony/symfony-standard/blob/2.1/composer.json
  16. 16. Birra● Tennents● La Frasca● Master Beer 0 °C ?

×