際際滷

際際滷Share a Scribd company logo
#pugMi
                                                                   16/10/2012




                                COMPOSER
                        E le dipendenze non sono pi湛 un problema


marted狸 16 ottobre 12
marted狸 16 ottobre 12
Esiste gi PEAR!




marted狸 16 ottobre 12
Esiste gi PEAR!
              installazione poco pulita




marted狸 16 ottobre 12
Esiste gi PEAR!
              installazione poco pulita

              canali sparsi




marted狸 16 ottobre 12
Esiste gi PEAR!
              installazione poco pulita

              canali sparsi

              standard troppo restrittivi




marted狸 16 ottobre 12
Vantaggi di composer




marted狸 16 ottobre 12
Vantaggi di composer
                         installazione legata al
                          progetto




marted狸 16 ottobre 12
Vantaggi di composer
                         installazione legata al
                          progetto

                         repository centrali




marted狸 16 ottobre 12
Vantaggi di composer
                         installazione legata al
                          progetto

                         repository centrali

                         non esiste processo di
                          approvazione




marted狸 16 ottobre 12
Vantaggi di composer
                         installazione legata al    tutte le dipendenze
                          progetto                    sono gestite da un unico
                                                      鍖le
                         repository centrali

                         non esiste processo di
                          approvazione




marted狸 16 ottobre 12
Vantaggi di composer
                         installazione legata al    tutte le dipendenze
                          progetto                    sono gestite da un unico
                                                      鍖le
                         repository centrali
                                                     composer.lock
                         non esiste processo di
                          approvazione




marted狸 16 ottobre 12
Problema




marted狸 16 ottobre 12
Problema
                    Ho bisogno di gestire delle versioni speci鍖che
                      delle librerie che utilizza il mio progetto.




marted狸 16 ottobre 12
Problema
                    Ho bisogno di gestire delle versioni speci鍖che
                      delle librerie che utilizza il mio progetto.
               Ho bisogno di condividerle con i miei colleghi,
              con lambiente di sviluppo e quello di produzione.




marted狸 16 ottobre 12
Problema
                    Ho bisogno di gestire delle versioni speci鍖che
                      delle librerie che utilizza il mio progetto.
               Ho bisogno di condividerle con i miei colleghi,
              con lambiente di sviluppo e quello di produzione.



                                 COMPOSER!
marted狸 16 ottobre 12
composer




marted狸 16 ottobre 12
composer
     Composer 竪 un gestore di dipendenze per progetto
      che permette di speci鍖care le versioni speci鍖che
                    delle librerie utilizzate.




marted狸 16 ottobre 12
composer
     Composer 竪 un gestore di dipendenze per progetto
      che permette di speci鍖care le versioni speci鍖che
                    delle librerie utilizzate.

           In senso opposto, permette di distribuire le mie
                 librerie attraverseo packagist.com e di
                   non preoccuparmi delle dipendenze.


marted狸 16 ottobre 12
marted狸 16 ottobre 12
Installazione




marted狸 16 ottobre 12
Installazione
            $ curl -s http://getcomposer.org/installer | php




marted狸 16 ottobre 12
Installazione
            $ curl -s http://getcomposer.org/installer | php


            $ curl -s http://getcomposer.org/installer | php
            -- --install-dir=bin




marted狸 16 ottobre 12
Installazione
            $ curl -s http://getcomposer.org/installer | php


            $ curl -s http://getcomposer.org/installer | php
            -- --install-dir=bin



            $ composer.phar self-update




marted狸 16 ottobre 12
composer.json




marted狸 16 ottobre 12
composer.json
                        {
                            "require": {
                                "silex/silex": "1.0.*"
                            },

                            "minimum-stability": "dev"
                        }




marted狸 16 ottobre 12
composer.json
                        {
                            "require": {
                                "silex/silex": "1.0.*"
                            },

                            "minimum-stability": "dev"
                        }


        Root del progetto

marted狸 16 ottobre 12
composer.json
                        {
                            "require": {
                                "silex/silex": "1.0.*"
                            },

                            "minimum-stability": "dev"
                        }


        Root del progetto           Require

marted狸 16 ottobre 12
composer.json
                        {
                            "require": {
                                "silex/silex": "1.0.*"
                            },

                            "minimum-stability": "dev"
                        }


        Root del progetto           Require   Minimum stability

marted狸 16 ottobre 12
marted狸 16 ottobre 12
Bootstrap progetto




marted狸 16 ottobre 12
Bootstrap progetto
        $ composer.phar create-project fabpot/silex-skeleton
                          ~/dev/myproject




marted狸 16 ottobre 12
Bootstrap progetto
        $ composer.phar create-project fabpot/silex-skeleton
                          ~/dev/myproject


                        TIP: possiamo creare un progetto,
                        eliminare le librerie che non ci
                        servono da composer.json e
                        rilanciare
                        $ php composer.phar update



marted狸 16 ottobre 12
Contribuire a un progetto




marted狸 16 ottobre 12
Contribuire a un progetto
$ composer.phar create-project dms/dms --dev ~/dev/oss/dms




marted狸 16 ottobre 12
Contribuire a un progetto
$ composer.phar create-project dms/dms --dev ~/dev/oss/dms




                        Tramite lopzione --dev il
                        sistema scarica anche le librerie
                        necessarie per contribuire ad un
                        progetto


marted狸 16 ottobre 12
autoload.php




marted狸 16 ottobre 12
autoload.php

   Composer generer un 鍖le per il loading di tutte le
                    tue librerie




marted狸 16 ottobre 12
autoload.php

   Composer generer un 鍖le per il loading di tutte le
                    tue librerie



                        vendor/autoload.php



marted狸 16 ottobre 12
composer everyday




marted狸 16 ottobre 12
composer everyday

                        composer.json




marted狸 16 ottobre 12
composer everyday

                        composer.json
                                        Lista delle dipendenze




marted狸 16 ottobre 12
composer everyday

                        composer.json
                                        Lista delle dipendenze

                    composer.lock




marted狸 16 ottobre 12
composer everyday

                        composer.json
                                        Lista delle dipendenze

                    composer.lock
                                        Dipendenze esistenti




marted狸 16 ottobre 12
UPDATE




marted狸 16 ottobre 12
UPDATE

                         lettura di composer.json




marted狸 16 ottobre 12
UPDATE

                         lettura di composer.json

                         download delle librerie necessarie




marted狸 16 ottobre 12
UPDATE

                         lettura di composer.json

                         download delle librerie necessarie

                         scrittura del 鍖le composer.lock




marted狸 16 ottobre 12
INSTALL




marted狸 16 ottobre 12
INSTALL

                         lettura di composer.json




marted狸 16 ottobre 12
INSTALL

                         lettura di composer.json

                         controllo del 鍖le composer.lock




marted狸 16 ottobre 12
INSTALL

                         lettura di composer.json

                         controllo del 鍖le composer.lock

                         recupero delle versioni lockate




marted狸 16 ottobre 12
marted狸 16 ottobre 12
composer.lock in versioning




marted狸 16 ottobre 12
composer.lock in versioning

                                composer.lock




marted狸 16 ottobre 12
composer.lock in versioning

                                composer.lock


                               composer install




marted狸 16 ottobre 12
composer.lock in versioning

                                      composer.lock


                                     composer install


                        Certezza di avere tutti i sistemi allineati


marted狸 16 ottobre 12
marted狸 16 ottobre 12
N!.-C!"p#$r P'*4'/$
                        {
                            "repositories": [
                                {
                                    "type": "package",
                                    "package": {
                                        "name": "smarty/smarty",
                                        "version": "3.1.7",
                                        "dist": {
                                            "url": "http://www.smarty.net/files/Smarty-3.1.7.zip",
                                            "type": "zip"
                                        },
                                        "source": {
                                            "url": "http://smarty-php.googlecode.com/svn/",
                                            "type": "svn",
                                            "reference": "tags/Smarty_3_1_7/distribution/"
                                        }
                                    }
                                }
                            ]
                        }




marted狸 16 ottobre 12
N!.-C!"p#$r P'*4'/$
                        {
                            "repositories": package: on-the-fly package, injecting a composer.json
                                             [
                                {
                                    "type": "package",
                                    "package": {
                                        "name": "smarty/smarty",
                                        "version": "3.1.7",
                                        "dist": {
                                             "url": "http://www.smarty.net/files/Smarty-3.1.7.zip",
                                             "type": "zip"
                                        },
                                        "source": {
                                             "url": "http://smarty-php.googlecode.com/svn/",
                                             "type": "svn",
                                             "reference": "tags/Smarty_3_1_7/distribution/"
                                        }
                                    }
                                }
                            ]
                        }




marted狸 16 ottobre 12
N!.-C!"p#$r P'*4'/$
                        {
                            "repositories": package: on-the-fly package, injecting a composer.json
                                             [
                                {
                                    "type": "package",
                                    "package": {
                                        "name": "smarty/smarty",
                                        "version": "3.1.7",
                                        "dist": {
                                             "url": "http://www.smarty.net/files/Smarty-3.1.7.zip",
                                             "type": "zip"                                           SVN / Git
                                        },
                                        "source": {
                                             "url": "http://smarty-php.googlecode.com/svn/",
                                             "type": "svn",
                                             "reference": "tags/Smarty_3_1_7/distribution/"
                                        }
                                    }
                                }
                            ]
                        }




marted狸 16 ottobre 12
I .$$- (+)0 PEAR p'*4'/$...
                                 No Problem!




marted狸 16 ottobre 12
{
                            "repositories": [
                                {
                                    "type": "pear",
                                    "url": "http://pear2.php.net"
                                }
                            ],
                            "require": {
                                "pear-pear2.php.net/PEAR2_Text_Markdown": "*",
                                "pear-pear2/PEAR2_HTTP_Request": "*"
                            }
                        }




marted狸 16 ottobre 12
{
                            "repositories": [   pear: official PEAR and custom PEAR channels
                                {
                                    "type": "pear",
                                    "url": "http://pear2.php.net"
                                }
                            ],
                            "require": {
                                "pear-pear2.php.net/PEAR2_Text_Markdown": "*",
                                "pear-pear2/PEAR2_HTTP_Request": "*"
                            }
                        }




marted狸 16 ottobre 12
{
                            "repositories": [   pear: official PEAR and custom PEAR channels
                                {
                                    "type": "pear",
                                    "url": "http://pear2.php.net"
                                }
                            ],
                            "require": {
                                "pear-pear2.php.net/PEAR2_Text_Markdown": "*",
                                "pear-pear2/PEAR2_HTTP_Request": "*"
                            }
                        }                Remember the prefix!




marted狸 16 ottobre 12
{
                            "repositories": [   pear: official PEAR and custom PEAR channels
                                {
                                    "type": "pear",
                                    "url": "http://pear2.php.net"
                                }
                            ],
                            "require": {
                                "pear-pear2.php.net/PEAR2_Text_Markdown": "*",
                                "pear-pear2/PEAR2_HTTP_Request": "*"
                            }
                        }                Remember the prefix!




                                                      !!   Warning: PEAR causes a overhead of requests




marted狸 16 ottobre 12
Script: composer event
marted狸 16 ottobre 12
marted狸 16 ottobre 12
oggi avrei voglia di qualcosa
                            di buono...
marted狸 16 ottobre 12
packagist.org
marted狸 16 ottobre 12
marted狸 16 ottobre 12
marted狸 16 ottobre 12
marted狸 16 ottobre 12
marted狸 16 ottobre 12
$ composer.phar search filter



       dms/dms-filter-bundle             :   DMS Filter Bundle, makes Annotation based ...
       lexik/form-filter-bundle          :   This bundle aim to provide classes to build...
       rollerworks/recordfilter-bundle   :   Record search-filtering bundle for Symfony
       brikou/zend_filter                :   Zend Framework Filter Library
       ext-filter                        :   The filter PHP extension
       dms/dms-filter                    :   DMS Library, includes various bundles and ...
       shtumi/useful-bundle              :   Symfony ShtumiUsefulBundle




marted狸 16 ottobre 12
marted狸 16 ottobre 12
$ composer.phar show dms/dms-filter-bundle

  name     : dms/dms-filter-bundle
  descrip. : DMS Filter Bundle, makes Annotation based entity
  filtering available
  in Symfony
  keywords : symfony, bundle, filter, dms
  versions : dev-master, v1.1.1, v1.1, 1.0.2, 1.0.1, 1.0.0
  type     : symfony-bundle
  license : MIT
  source   : [git] https://github.com/rdohms/DMSFilterBundle v1.1.1
  dist     : [zip] https://github.com/rdohms/DMSFilterBundle/
  zipball/v1.1.1 v1.1.1
  names    : dms/dms-filter-bundle
  autoload
  psr-0
  DMSBundleFilterBundle => .
  requires
  php >=5.3.2
  dms/dms-filter >=1.0.2

marted狸 16 ottobre 12
marted狸 16 ottobre 12
Compiti a casa
                               https://github.com/composer/satis

               Satis - Package Repository Generator


               Simple static Composer repository generator.

               It uses any composer.json 鍖le as input and dumps all the required (according to their version
               constraints)

               packages to a Composer Repository 鍖le.




marted狸 16 ottobre 12
Link
         http://getcomposer.org

         https://github.com/composer/composer

         http://packagist.org

         http://www.slideshare.net/rdohms/composer-
                 putting-dependencies-on-the-score



marted狸 16 ottobre 12

More Related Content

Composer

  • 1. #pugMi 16/10/2012 COMPOSER E le dipendenze non sono pi湛 un problema marted狸 16 ottobre 12
  • 4. Esiste gi PEAR! installazione poco pulita marted狸 16 ottobre 12
  • 5. Esiste gi PEAR! installazione poco pulita canali sparsi marted狸 16 ottobre 12
  • 6. Esiste gi PEAR! installazione poco pulita canali sparsi standard troppo restrittivi marted狸 16 ottobre 12
  • 8. Vantaggi di composer installazione legata al progetto marted狸 16 ottobre 12
  • 9. Vantaggi di composer installazione legata al progetto repository centrali marted狸 16 ottobre 12
  • 10. Vantaggi di composer installazione legata al progetto repository centrali non esiste processo di approvazione marted狸 16 ottobre 12
  • 11. Vantaggi di composer installazione legata al tutte le dipendenze progetto sono gestite da un unico 鍖le repository centrali non esiste processo di approvazione marted狸 16 ottobre 12
  • 12. Vantaggi di composer installazione legata al tutte le dipendenze progetto sono gestite da un unico 鍖le repository centrali composer.lock non esiste processo di approvazione marted狸 16 ottobre 12
  • 14. Problema Ho bisogno di gestire delle versioni speci鍖che delle librerie che utilizza il mio progetto. marted狸 16 ottobre 12
  • 15. Problema Ho bisogno di gestire delle versioni speci鍖che delle librerie che utilizza il mio progetto. Ho bisogno di condividerle con i miei colleghi, con lambiente di sviluppo e quello di produzione. marted狸 16 ottobre 12
  • 16. Problema Ho bisogno di gestire delle versioni speci鍖che delle librerie che utilizza il mio progetto. Ho bisogno di condividerle con i miei colleghi, con lambiente di sviluppo e quello di produzione. COMPOSER! marted狸 16 ottobre 12
  • 18. composer Composer 竪 un gestore di dipendenze per progetto che permette di speci鍖care le versioni speci鍖che delle librerie utilizzate. marted狸 16 ottobre 12
  • 19. composer Composer 竪 un gestore di dipendenze per progetto che permette di speci鍖care le versioni speci鍖che delle librerie utilizzate. In senso opposto, permette di distribuire le mie librerie attraverseo packagist.com e di non preoccuparmi delle dipendenze. marted狸 16 ottobre 12
  • 22. Installazione $ curl -s http://getcomposer.org/installer | php marted狸 16 ottobre 12
  • 23. Installazione $ curl -s http://getcomposer.org/installer | php $ curl -s http://getcomposer.org/installer | php -- --install-dir=bin marted狸 16 ottobre 12
  • 24. Installazione $ curl -s http://getcomposer.org/installer | php $ curl -s http://getcomposer.org/installer | php -- --install-dir=bin $ composer.phar self-update marted狸 16 ottobre 12
  • 26. composer.json { "require": { "silex/silex": "1.0.*" }, "minimum-stability": "dev" } marted狸 16 ottobre 12
  • 27. composer.json { "require": { "silex/silex": "1.0.*" }, "minimum-stability": "dev" } Root del progetto marted狸 16 ottobre 12
  • 28. composer.json { "require": { "silex/silex": "1.0.*" }, "minimum-stability": "dev" } Root del progetto Require marted狸 16 ottobre 12
  • 29. composer.json { "require": { "silex/silex": "1.0.*" }, "minimum-stability": "dev" } Root del progetto Require Minimum stability marted狸 16 ottobre 12
  • 32. Bootstrap progetto $ composer.phar create-project fabpot/silex-skeleton ~/dev/myproject marted狸 16 ottobre 12
  • 33. Bootstrap progetto $ composer.phar create-project fabpot/silex-skeleton ~/dev/myproject TIP: possiamo creare un progetto, eliminare le librerie che non ci servono da composer.json e rilanciare $ php composer.phar update marted狸 16 ottobre 12
  • 34. Contribuire a un progetto marted狸 16 ottobre 12
  • 35. Contribuire a un progetto $ composer.phar create-project dms/dms --dev ~/dev/oss/dms marted狸 16 ottobre 12
  • 36. Contribuire a un progetto $ composer.phar create-project dms/dms --dev ~/dev/oss/dms Tramite lopzione --dev il sistema scarica anche le librerie necessarie per contribuire ad un progetto marted狸 16 ottobre 12
  • 38. autoload.php Composer generer un 鍖le per il loading di tutte le tue librerie marted狸 16 ottobre 12
  • 39. autoload.php Composer generer un 鍖le per il loading di tutte le tue librerie vendor/autoload.php marted狸 16 ottobre 12
  • 41. composer everyday composer.json marted狸 16 ottobre 12
  • 42. composer everyday composer.json Lista delle dipendenze marted狸 16 ottobre 12
  • 43. composer everyday composer.json Lista delle dipendenze composer.lock marted狸 16 ottobre 12
  • 44. composer everyday composer.json Lista delle dipendenze composer.lock Dipendenze esistenti marted狸 16 ottobre 12
  • 46. UPDATE lettura di composer.json marted狸 16 ottobre 12
  • 47. UPDATE lettura di composer.json download delle librerie necessarie marted狸 16 ottobre 12
  • 48. UPDATE lettura di composer.json download delle librerie necessarie scrittura del 鍖le composer.lock marted狸 16 ottobre 12
  • 50. INSTALL lettura di composer.json marted狸 16 ottobre 12
  • 51. INSTALL lettura di composer.json controllo del 鍖le composer.lock marted狸 16 ottobre 12
  • 52. INSTALL lettura di composer.json controllo del 鍖le composer.lock recupero delle versioni lockate marted狸 16 ottobre 12
  • 55. composer.lock in versioning composer.lock marted狸 16 ottobre 12
  • 56. composer.lock in versioning composer.lock composer install marted狸 16 ottobre 12
  • 57. composer.lock in versioning composer.lock composer install Certezza di avere tutti i sistemi allineati marted狸 16 ottobre 12
  • 59. N!.-C!"p#$r P'*4'/$ { "repositories": [ { "type": "package", "package": { "name": "smarty/smarty", "version": "3.1.7", "dist": { "url": "http://www.smarty.net/files/Smarty-3.1.7.zip", "type": "zip" }, "source": { "url": "http://smarty-php.googlecode.com/svn/", "type": "svn", "reference": "tags/Smarty_3_1_7/distribution/" } } } ] } marted狸 16 ottobre 12
  • 60. N!.-C!"p#$r P'*4'/$ { "repositories": package: on-the-fly package, injecting a composer.json [ { "type": "package", "package": { "name": "smarty/smarty", "version": "3.1.7", "dist": { "url": "http://www.smarty.net/files/Smarty-3.1.7.zip", "type": "zip" }, "source": { "url": "http://smarty-php.googlecode.com/svn/", "type": "svn", "reference": "tags/Smarty_3_1_7/distribution/" } } } ] } marted狸 16 ottobre 12
  • 61. N!.-C!"p#$r P'*4'/$ { "repositories": package: on-the-fly package, injecting a composer.json [ { "type": "package", "package": { "name": "smarty/smarty", "version": "3.1.7", "dist": { "url": "http://www.smarty.net/files/Smarty-3.1.7.zip", "type": "zip" SVN / Git }, "source": { "url": "http://smarty-php.googlecode.com/svn/", "type": "svn", "reference": "tags/Smarty_3_1_7/distribution/" } } } ] } marted狸 16 ottobre 12
  • 62. I .$$- (+)0 PEAR p'*4'/$... No Problem! marted狸 16 ottobre 12
  • 63. { "repositories": [ { "type": "pear", "url": "http://pear2.php.net" } ], "require": { "pear-pear2.php.net/PEAR2_Text_Markdown": "*", "pear-pear2/PEAR2_HTTP_Request": "*" } } marted狸 16 ottobre 12
  • 64. { "repositories": [ pear: official PEAR and custom PEAR channels { "type": "pear", "url": "http://pear2.php.net" } ], "require": { "pear-pear2.php.net/PEAR2_Text_Markdown": "*", "pear-pear2/PEAR2_HTTP_Request": "*" } } marted狸 16 ottobre 12
  • 65. { "repositories": [ pear: official PEAR and custom PEAR channels { "type": "pear", "url": "http://pear2.php.net" } ], "require": { "pear-pear2.php.net/PEAR2_Text_Markdown": "*", "pear-pear2/PEAR2_HTTP_Request": "*" } } Remember the prefix! marted狸 16 ottobre 12
  • 66. { "repositories": [ pear: official PEAR and custom PEAR channels { "type": "pear", "url": "http://pear2.php.net" } ], "require": { "pear-pear2.php.net/PEAR2_Text_Markdown": "*", "pear-pear2/PEAR2_HTTP_Request": "*" } } Remember the prefix! !! Warning: PEAR causes a overhead of requests marted狸 16 ottobre 12
  • 69. oggi avrei voglia di qualcosa di buono... marted狸 16 ottobre 12
  • 75. $ composer.phar search filter dms/dms-filter-bundle : DMS Filter Bundle, makes Annotation based ... lexik/form-filter-bundle : This bundle aim to provide classes to build... rollerworks/recordfilter-bundle : Record search-filtering bundle for Symfony brikou/zend_filter : Zend Framework Filter Library ext-filter : The filter PHP extension dms/dms-filter : DMS Library, includes various bundles and ... shtumi/useful-bundle : Symfony ShtumiUsefulBundle marted狸 16 ottobre 12
  • 77. $ composer.phar show dms/dms-filter-bundle name : dms/dms-filter-bundle descrip. : DMS Filter Bundle, makes Annotation based entity filtering available in Symfony keywords : symfony, bundle, filter, dms versions : dev-master, v1.1.1, v1.1, 1.0.2, 1.0.1, 1.0.0 type : symfony-bundle license : MIT source : [git] https://github.com/rdohms/DMSFilterBundle v1.1.1 dist : [zip] https://github.com/rdohms/DMSFilterBundle/ zipball/v1.1.1 v1.1.1 names : dms/dms-filter-bundle autoload psr-0 DMSBundleFilterBundle => . requires php >=5.3.2 dms/dms-filter >=1.0.2 marted狸 16 ottobre 12
  • 79. Compiti a casa https://github.com/composer/satis Satis - Package Repository Generator Simple static Composer repository generator. It uses any composer.json 鍖le as input and dumps all the required (according to their version constraints) packages to a Composer Repository 鍖le. marted狸 16 ottobre 12
  • 80. Link http://getcomposer.org https://github.com/composer/composer http://packagist.org http://www.slideshare.net/rdohms/composer- putting-dependencies-on-the-score marted狸 16 ottobre 12