SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
pugBO #10 PSR
e Composer
Davide Bellettini

http://twitter.com/SbiellONE
http://it.linkedin.com/in/davidebellettini/
http://www.davidebellettini.com/
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)
Gli standard 1/3
Le 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
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
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
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à
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
Alcuni progetti
● Drupal 8
● Tutti i prodotti Sensio (Symfony 2.1, Twig,
  Silex, ...)
● Doctrine
● Smarty
● UniversiBO
● Zend Framework
● ...
● Sempre in aumento!
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
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.*",
     ...
}
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
Ma la libreria XYZ...
... è su un repository PEAR

Nessun problema! Composer installa anche da
PEAR

http://getcomposer.org/doc/04-schema.
md#repositories
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!
In pratica
Scaricamento del phar
curl -s https://getcomposer.org/installer |
php
Creazione di un nuovo composer.json passo
passo: php composer.phar init
Aggiornamento delle dipendenze
php composer.phar update

Installazione a partire da composer.lock
php composer.phar install
Alcuni esempi concreti
Alcuni composer.json di progetti reali.
https://github.
com/UniversiBO/UniversiBO/blob/master/comp
oser.json
https://github.
com/FriendsOfSymfony/FOSUserBundle/blob/
master/composer.json
https://github.com/symfony/symfony-
standard/blob/2.1/composer.json
Birra
●   Tennent's
●   La Frasca
●   Master Beer 0 °C ?

Weitere ähnliche Inhalte

Was ist angesagt?

php day 2008 - Introduzione agli ez components
php day 2008 - Introduzione agli ez componentsphp day 2008 - Introduzione agli ez components
php day 2008 - Introduzione agli ez componentsGaetano Giunta
 
Linux Capabilities - ita - v2.1.5 - compatta
Linux Capabilities - ita - v2.1.5 - compattaLinux Capabilities - ita - v2.1.5 - compatta
Linux Capabilities - ita - v2.1.5 - compattaAlessandro Selli
 
Espressioni regolari da 0 a esperti
Espressioni regolari da 0 a espertiEspressioni regolari da 0 a esperti
Espressioni regolari da 0 a espertiMariano Fiorentino
 
A short introduction about traffic shaping and K-Shaper tool --- speech at Ha...
A short introduction about traffic shaping and K-Shaper tool --- speech at Ha...A short introduction about traffic shaping and K-Shaper tool --- speech at Ha...
A short introduction about traffic shaping and K-Shaper tool --- speech at Ha...Massimiliano Leone
 
Seminario introduzione all'uso del terminale e della bash in Linux
Seminario introduzione all'uso del terminale e della bash in LinuxSeminario introduzione all'uso del terminale e della bash in Linux
Seminario introduzione all'uso del terminale e della bash in Linuxalberto fiaschi
 
Richiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatoriRichiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatoriFulvio Corno
 
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...gammsystem
 
Gaetano Giunta: introduzione agli eZ components
Gaetano Giunta: introduzione agli eZ componentsGaetano Giunta: introduzione agli eZ components
Gaetano Giunta: introduzione agli eZ componentsFrancesco Fullone
 
T3Camp Italia 2014 - TypoScript: personalizzare la configurazione di css_styl...
T3Camp Italia 2014 - TypoScript: personalizzare la configurazione di css_styl...T3Camp Italia 2014 - TypoScript: personalizzare la configurazione di css_styl...
T3Camp Italia 2014 - TypoScript: personalizzare la configurazione di css_styl...Roberto Torresani
 
Linux Day Torino 2015 applicazioni per iniziare
Linux Day Torino 2015   applicazioni per iniziareLinux Day Torino 2015   applicazioni per iniziare
Linux Day Torino 2015 applicazioni per iniziareFrancesco Tucci
 
Linux Kernel, driver e compilazione
Linux Kernel, driver e compilazioneLinux Kernel, driver e compilazione
Linux Kernel, driver e compilazioneFulvio Corno
 

Was ist angesagt? (14)

php day 2008 - Introduzione agli ez components
php day 2008 - Introduzione agli ez componentsphp day 2008 - Introduzione agli ez components
php day 2008 - Introduzione agli ez components
 
Linux Capabilities - ita - v2.1.5 - compatta
Linux Capabilities - ita - v2.1.5 - compattaLinux Capabilities - ita - v2.1.5 - compatta
Linux Capabilities - ita - v2.1.5 - compatta
 
Espressioni regolari da 0 a esperti
Espressioni regolari da 0 a espertiEspressioni regolari da 0 a esperti
Espressioni regolari da 0 a esperti
 
Corso Bash
Corso BashCorso Bash
Corso Bash
 
A short introduction about traffic shaping and K-Shaper tool --- speech at Ha...
A short introduction about traffic shaping and K-Shaper tool --- speech at Ha...A short introduction about traffic shaping and K-Shaper tool --- speech at Ha...
A short introduction about traffic shaping and K-Shaper tool --- speech at Ha...
 
Seminario introduzione all'uso del terminale e della bash in Linux
Seminario introduzione all'uso del terminale e della bash in LinuxSeminario introduzione all'uso del terminale e della bash in Linux
Seminario introduzione all'uso del terminale e della bash in Linux
 
Richiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatoriRichiami su Linux - Webmin - Reti di calcolatori
Richiami su Linux - Webmin - Reti di calcolatori
 
Resocontolinuxlite
ResocontolinuxliteResocontolinuxlite
Resocontolinuxlite
 
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
TYPO3 e la partenza intelligente. Familiarizzare con l'ambiente e lo strument...
 
Gaetano Giunta: introduzione agli eZ components
Gaetano Giunta: introduzione agli eZ componentsGaetano Giunta: introduzione agli eZ components
Gaetano Giunta: introduzione agli eZ components
 
T3Camp Italia 2014 - TypoScript: personalizzare la configurazione di css_styl...
T3Camp Italia 2014 - TypoScript: personalizzare la configurazione di css_styl...T3Camp Italia 2014 - TypoScript: personalizzare la configurazione di css_styl...
T3Camp Italia 2014 - TypoScript: personalizzare la configurazione di css_styl...
 
Linux Day Torino 2015 applicazioni per iniziare
Linux Day Torino 2015   applicazioni per iniziareLinux Day Torino 2015   applicazioni per iniziare
Linux Day Torino 2015 applicazioni per iniziare
 
Linux Kernel, driver e compilazione
Linux Kernel, driver e compilazioneLinux Kernel, driver e compilazione
Linux Kernel, driver e compilazione
 
LTSP
LTSPLTSP
LTSP
 

Andere mochten auch

Metering Central America &amp; Mexico 2011
Metering Central America &amp; Mexico 2011Metering Central America &amp; Mexico 2011
Metering Central America &amp; Mexico 2011adrianorehder
 
17263.002 Smart Grid
17263.002 Smart Grid17263.002 Smart Grid
17263.002 Smart Gridadrianorehder
 
Meterig Central America &amp; Mexico 2011
Meterig Central America &amp; Mexico 2011Meterig Central America &amp; Mexico 2011
Meterig Central America &amp; Mexico 2011adrianorehder
 
Metering Central America &amp; Mexico
Metering Central America &amp; MexicoMetering Central America &amp; Mexico
Metering Central America &amp; Mexicoadrianorehder
 
Deepwater Brazil Congress 2010
Deepwater Brazil Congress 2010Deepwater Brazil Congress 2010
Deepwater Brazil Congress 2010adrianorehder
 
Presentación lanzamiento del estudio: "Análisis de la demanda energética de B...
Presentación lanzamiento del estudio: "Análisis de la demanda energética de B...Presentación lanzamiento del estudio: "Análisis de la demanda energética de B...
Presentación lanzamiento del estudio: "Análisis de la demanda energética de B...Empresa de Energía de Bogotá
 
Smart Grid Brazil Forum
Smart Grid Brazil ForumSmart Grid Brazil Forum
Smart Grid Brazil Forumadrianorehder
 

Andere mochten auch (8)

Metering Central America &amp; Mexico 2011
Metering Central America &amp; Mexico 2011Metering Central America &amp; Mexico 2011
Metering Central America &amp; Mexico 2011
 
17263.002 Smart Grid
17263.002 Smart Grid17263.002 Smart Grid
17263.002 Smart Grid
 
Meterig Central America &amp; Mexico 2011
Meterig Central America &amp; Mexico 2011Meterig Central America &amp; Mexico 2011
Meterig Central America &amp; Mexico 2011
 
Metering Central America &amp; Mexico
Metering Central America &amp; MexicoMetering Central America &amp; Mexico
Metering Central America &amp; Mexico
 
Deepwater Brazil Congress 2010
Deepwater Brazil Congress 2010Deepwater Brazil Congress 2010
Deepwater Brazil Congress 2010
 
Presentación lanzamiento del estudio: "Análisis de la demanda energética de B...
Presentación lanzamiento del estudio: "Análisis de la demanda energética de B...Presentación lanzamiento del estudio: "Análisis de la demanda energética de B...
Presentación lanzamiento del estudio: "Análisis de la demanda energética de B...
 
Smart Grid Brazil Forum
Smart Grid Brazil ForumSmart Grid Brazil Forum
Smart Grid Brazil Forum
 
Smart Grid
Smart GridSmart Grid
Smart Grid
 

Ähnlich wie pugBO #10 PSR e Composer

Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxTrace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxDeveler S.r.l.
 
Continuous Integration e High Quality Code
Continuous Integration e High Quality CodeContinuous Integration e High Quality Code
Continuous Integration e High Quality CodeDaniele Mondello
 
Linux@Unina
Linux@UninaLinux@Unina
Linux@UninaNaLUG
 
Link. php [santi caltabiano]
  Link. php [santi caltabiano]  Link. php [santi caltabiano]
Link. php [santi caltabiano]santi caltabiano
 
Closure Visto Da Vicino
Closure Visto Da VicinoClosure Visto Da Vicino
Closure Visto Da Vicinodavide ficano
 
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1Daniele Falamesca
 
Introduzione al web (2/2) - 18/19
Introduzione al web (2/2) - 18/19Introduzione al web (2/2) - 18/19
Introduzione al web (2/2) - 18/19Giuseppe Vizzari
 
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxMarco Ferrigno
 
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018Marco Chiesi
 
5 - Introduzione al Web (2/2)
5 - Introduzione al Web (2/2)5 - Introduzione al Web (2/2)
5 - Introduzione al Web (2/2)Giuseppe Vizzari
 
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPNetbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPGiorgio Cefaro
 
Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.Filippo Matteo Riggio
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ CodeDaniele Mondello
 
Motori di ricerca per cercare file in Linux
Motori di ricerca per cercare file in LinuxMotori di ricerca per cercare file in Linux
Motori di ricerca per cercare file in LinuxRoberto Marmo
 
5 - Introduzione al Web (2/2) - 17/18
5 - Introduzione al Web (2/2) - 17/185 - Introduzione al Web (2/2) - 17/18
5 - Introduzione al Web (2/2) - 17/18Giuseppe Vizzari
 

Ähnlich wie pugBO #10 PSR e Composer (20)

Logging
LoggingLogging
Logging
 
GNU Linux Programming introduction
GNU Linux Programming introductionGNU Linux Programming introduction
GNU Linux Programming introduction
 
SVN/TRAC
SVN/TRACSVN/TRAC
SVN/TRAC
 
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxTrace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
 
Continuous Integration e High Quality Code
Continuous Integration e High Quality CodeContinuous Integration e High Quality Code
Continuous Integration e High Quality Code
 
Battaglia Navale
Battaglia NavaleBattaglia Navale
Battaglia Navale
 
Linux@Unina
Linux@UninaLinux@Unina
Linux@Unina
 
Link. php [santi caltabiano]
  Link. php [santi caltabiano]  Link. php [santi caltabiano]
Link. php [santi caltabiano]
 
Closure Visto Da Vicino
Closure Visto Da VicinoClosure Visto Da Vicino
Closure Visto Da Vicino
 
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
Corso di Basi e Fondamenti di Programmazione in C++ Lezione 1
 
Introduzione al web (2/2) - 18/19
Introduzione al web (2/2) - 18/19Introduzione al web (2/2) - 18/19
Introduzione al web (2/2) - 18/19
 
DHow2 - L5
DHow2 - L5DHow2 - L5
DHow2 - L5
 
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel LinuxPIT2012: Workshop@UniNA - Compilazione del Kernel Linux
PIT2012: Workshop@UniNA - Compilazione del Kernel Linux
 
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
Sviluppare un plugin WordPress da zero - WordCamp Bologna 2018
 
5 - Introduzione al Web (2/2)
5 - Introduzione al Web (2/2)5 - Introduzione al Web (2/2)
5 - Introduzione al Web (2/2)
 
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHPNetbeans e Xdebug per debugging e profiling di applicazioni PHP
Netbeans e Xdebug per debugging e profiling di applicazioni PHP
 
Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.Profilazione di applicazioni PHP con XHProf.
Profilazione di applicazioni PHP con XHProf.
 
Continous Delivery & HQ Code
Continous Delivery & HQ CodeContinous Delivery & HQ Code
Continous Delivery & HQ Code
 
Motori di ricerca per cercare file in Linux
Motori di ricerca per cercare file in LinuxMotori di ricerca per cercare file in Linux
Motori di ricerca per cercare file in Linux
 
5 - Introduzione al Web (2/2) - 17/18
5 - Introduzione al Web (2/2) - 17/185 - Introduzione al Web (2/2) - 17/18
5 - Introduzione al Web (2/2) - 17/18
 

Mehr von Davide Bellettini

CQRS and Event Sourcing with MongoDB and PHP
CQRS and Event Sourcing with MongoDB and PHPCQRS and Event Sourcing with MongoDB and PHP
CQRS and Event Sourcing with MongoDB and PHPDavide Bellettini
 
Presentazione UniversiBO (Ingegneria Informatica)
Presentazione UniversiBO (Ingegneria Informatica)Presentazione UniversiBO (Ingegneria Informatica)
Presentazione UniversiBO (Ingegneria Informatica)Davide Bellettini
 
Riunione aperta UniversiBO 08/05/2012
Riunione aperta UniversiBO 08/05/2012Riunione aperta UniversiBO 08/05/2012
Riunione aperta UniversiBO 08/05/2012Davide Bellettini
 
Framework di supporto allo sviluppo di applicazioni Web
Framework di supporto allo sviluppo di applicazioni WebFramework di supporto allo sviluppo di applicazioni Web
Framework di supporto allo sviluppo di applicazioni WebDavide Bellettini
 

Mehr von Davide Bellettini (6)

CQRS and Event Sourcing with MongoDB and PHP
CQRS and Event Sourcing with MongoDB and PHPCQRS and Event Sourcing with MongoDB and PHP
CQRS and Event Sourcing with MongoDB and PHP
 
Presentazione UniversiBO
Presentazione UniversiBOPresentazione UniversiBO
Presentazione UniversiBO
 
Presentazione UniversiBO (Ingegneria Informatica)
Presentazione UniversiBO (Ingegneria Informatica)Presentazione UniversiBO (Ingegneria Informatica)
Presentazione UniversiBO (Ingegneria Informatica)
 
Riunione aperta UniversiBO 08/05/2012
Riunione aperta UniversiBO 08/05/2012Riunione aperta UniversiBO 08/05/2012
Riunione aperta UniversiBO 08/05/2012
 
MyJOrganizer presentazione
MyJOrganizer presentazioneMyJOrganizer presentazione
MyJOrganizer presentazione
 
Framework di supporto allo sviluppo di applicazioni Web
Framework di supporto allo sviluppo di applicazioni WebFramework di supporto allo sviluppo di applicazioni Web
Framework di supporto allo sviluppo di applicazioni Web
 

pugBO #10 PSR e Composer

  • 1. pugBO #10 PSR e Composer Davide Bellettini http://twitter.com/SbiellONE http://it.linkedin.com/in/davidebellettini/ http://www.davidebellettini.com/
  • 2. 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)
  • 3. Gli standard 1/3 Le 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. 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
  • 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. 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à
  • 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. Alcuni progetti ● Drupal 8 ● Tutti i prodotti Sensio (Symfony 2.1, Twig, Silex, ...) ● Doctrine ● Smarty ● UniversiBO ● Zend Framework ● ... ● Sempre in aumento!
  • 9. 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
  • 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. 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
  • 12. Ma la libreria XYZ... ... è su un repository PEAR Nessun problema! Composer installa anche da PEAR http://getcomposer.org/doc/04-schema. md#repositories
  • 13. 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!
  • 14. In pratica Scaricamento del phar curl -s https://getcomposer.org/installer | php Creazione di un nuovo composer.json passo passo: php composer.phar init Aggiornamento delle dipendenze php composer.phar update Installazione a partire da composer.lock php composer.phar install
  • 15. Alcuni esempi concreti Alcuni composer.json di progetti reali. https://github. com/UniversiBO/UniversiBO/blob/master/comp oser.json https://github. com/FriendsOfSymfony/FOSUserBundle/blob/ master/composer.json https://github.com/symfony/symfony- standard/blob/2.1/composer.json
  • 16. Birra ● Tennent's ● La Frasca ● Master Beer 0 °C ?