SlideShare una empresa de Scribd logo
Composer & SemVer
Symfony Zaragoza
By Alejandro Celaya @acelayaa
Evolución de PHP
- Proyectos y estándares modernos.
http://www.php-fig.org/
- Desarrollo de componentes antes que
frameworks.
¿Qué es composer?
- Gestor de dependencias para proyectos
PHP. https://packagist.org/
- Otros: PEAR, Maven, Gradle, RubyGems,
Bundler, npm…
- “Composer is strongly inspired by node's
npm and ruby's bundler”.
¿Qué resuelve composer?
- Gestión de dependencias (de forma
recursiva)
- Actualización de dependencias
- Autoloading propio y de terceros
El estándar de Semantic Versioning
- SemVer: http://semver.org/
- Version 2.0.0: MAJOR.MINOR.PATCH
SemVer aplicado a composer
- Muchos proyectos PHP siguen el estándar
de SemVer.
- Mecanismos para asegurarnos de qué
versión vamos a instalar.
"vendor/package": "1.2.3"
"vendor/package": "2.0.*"
"vendor/package": ">=2.0"
"vendor/package": "~1.4"
Instalar composer
- Documentación de la web.
curl -sS https://getcomposer.org/installer | php
- De forma global.
chmod +x composer.phar
mv composer.phar /usr/local/bin/composer
Configuración de composer
{
"name": "symfony-zgz/silex-skeleton",
"description": "...",
"license": "MIT",
"type": "project",
"require": {
"php": ">=5.5",
"silex/silex": "~1.0",
"silex/web-profiler": "~1.0",
"symfony/browser-kit": "~2.3",
"symfony/class-loader": "~2.3",
// ...
"doctrine/orm": "~2.0",
"zendframework/zend-stdlib": "~2.3"
},
"require-dev": {
"phpunit/phpunit": "~4.0",
"squizlabs/php_codesniffer": "~1.0"
},
"autoload": {
"psr-4": {
"SymfonyZgz": "src/"
}
},
"autoload-dev": {
"psr-4": {
"SymfonyZgzTest": "tests/"
}
}
}
Configuración de composer
- No hay que memorizar la estructura.
composer init
Bloques importantes
require y require-dev:
- Lista de componentes a instalar y su versión
Bloques importantes
autoload y autoload-dev:
- Reglas para cargar clases de forma
automática.
- Opciones: psr-0, psr-4, classmap y files.
Comandos principales
- Instalar dependencias por primera vez.
composer install
- Actualizar dependencias a la última versión válida.
composer update
- Actualizar el binario de composer.
composer self-update
- Regenerar el autoloader.
composer dump-autoload
Otros usos (avanzados)
Agregar dependencias
- No editar composer.json
- Requerir el componente para instalarlo.
composer require vendor/package:~1.0
- Instalarlo de forma global.
composer global require vendor/package:~1.0
Otros usos (avanzados)
Optimizar autoloader:
- Optimizar el rendimiento del autoloader para
producción.
composer dump-autoload --optimize
- Se generará un classmap en vez de iterar
directorios.
Otros usos (avanzados)
Dependencias de producción:
- No instalar los componentes de require-dev.
composer update --no-dev
- Descargamos el autoloader y reducimos
tamaño final.
- Con --optimize-autoloader generamos el
classmap autoloader en el mismo paso.
Otros usos (avanzados)
Repositorios privados:
- Permiten instalar dependencias de fuentes
distintas a packagist.
"repositories": [
{
"type": "vcs",
"url": "https://github.com/acelaya/composer-semver-talk.git"
}
]
Otros usos (avanzados)
Dependencias de PHP:
- Indicar que dependemos de una extensión o
versión de PHP determinados.
"require": {
"php": ">=5.5",
"ext-intl": "*",
"ext-sqlite": "*",
// ...
},
Otros usos (avanzados)
CLI scripts:
- Scripts del proyecto para ejecutar desde
consola.
"bin": [
"bin/print-something",
"bin/do-something"
]
Otros usos (avanzados)
Eventos:
- Callbacks y comandos que se ejecutan en
momentos determinados.
"scripts": {
"post-package-install": "SymfonyZgzMyClass::postPkgInstall",
"post-install-cmd": [
"SymfonyZgzMyClass::postInstall",
"phpunit -c app/"
],
}
Otros usos (avanzados)
Instalación de proyectos:
- Podemos distribuir proyectos enteros
mediante composer.
composer create-project vendor/package
"require": {
"php": ">=5.5.0",
"slim/slim": "~2.4",
"slim/views": "0.1.*",
"slimcontroller/slimcontroller": "~0.4",
"apache/log4php": "2.3.*",
"doctrine/orm": "2.4.*",
"doctrine/doctrine-module": "0.*",
"symfony/yaml": "2.*",
"symfony/process": "~2.4",
"symfony/console": "~2.4",
"league/flysystem": "0.5.*",
"aws/aws-sdk-php": "~2.5",
"zendframework/zend-form": "2.3.*",
"zendframework/zend-i18n": "2.3.*",
"zendframework/zend-servicemanager": "2.3.*",
"zendframework/zend-authentication": "2.3.*",
"zendframework/zend-session": "2.3.*",
"zendframework/zend-stdlib": "2.3.*",
"swiftmailer/swiftmailer": "5.2.*",
"endroid/qrcode": "1.2.*",
"twig/twig": "1.*",
"twig/extensions": "~1.1.0",
"dompdf/dompdf": "0.6.*",
"cocur/slugify": "~0.11"
}
Ejemplo
Enlaces
- Composer: https://getcomposer.org/
- SemVer: http://semver.org/
- Packagist: https://packagist.org/
- PHP-FIG: http://www.php-fig.org/
- Ejemplo: https://github.com/acelaya/composer-semver-talk
- SemVer checker: https://github.com/tomzx/php-semver-checker
- The PHP League: http://thephpleague.com/

Más contenido relacionado

PPTX
02 instalacion eclipse y wamp server
PPTX
Servidores web apache
DOCX
Orlando yepez[1]
PPTX
Introducción a Silex
PPTX
01- instalacion de laravel 5+ (dos formas sencillas )
PDF
Ruby on the Rails
PPTX
lección 02- creación de Virtual Host laravel 5 + Xampp + Windows
ODP
Introducción a Symfony
02 instalacion eclipse y wamp server
Servidores web apache
Orlando yepez[1]
Introducción a Silex
01- instalacion de laravel 5+ (dos formas sencillas )
Ruby on the Rails
lección 02- creación de Virtual Host laravel 5 + Xampp + Windows
Introducción a Symfony

La actualidad más candente (20)

PPSX
Desarrollo rapido de aplicaciones web en php con el framework cakephp + scaffold
PDF
Introducción a Ansible
PDF
Elementos sobre Symfony 2.1
PPTX
Selenium
PDF
Provisión Automática de máquinas con Ansible
ODP
Gestionando tu infraestructura con Ansible
PPTX
CRUD básico con Symfony
PPTX
Servidor Web Apache para Linux
PPTX
Introducción a Laravel 5 - Un Framework para Artesanos Web
PPTX
Servidor web apache
ODP
Java swing
DOCX
Servidores de aplicaciones para servicios web
PDF
Silex para aplicaciones web MVC
PDF
Introducción a PHPUnit
PPTX
Significado xampp
PPTX
Apache practica
PDF
Servidor web Apache
Desarrollo rapido de aplicaciones web en php con el framework cakephp + scaffold
Introducción a Ansible
Elementos sobre Symfony 2.1
Selenium
Provisión Automática de máquinas con Ansible
Gestionando tu infraestructura con Ansible
CRUD básico con Symfony
Servidor Web Apache para Linux
Introducción a Laravel 5 - Un Framework para Artesanos Web
Servidor web apache
Java swing
Servidores de aplicaciones para servicios web
Silex para aplicaciones web MVC
Introducción a PHPUnit
Significado xampp
Apache practica
Servidor web Apache
Publicidad

Similar a Composer & SemVer (20)

PDF
Clase 3 instalación y primeros pasos
PDF
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
PDF
Docker en el entorno de desarrollo
PDF
Integrando sonar
PPTX
Aplicaciones web con php y my sql
PDF
Vagrant y Docker - Guía práctica de uso
PDF
Docker: la revolución en virtualización
PDF
Open Build Service
PDF
Instalación KOHA: desarrollo, requerimientos y configuración
PPTX
PDF
Desarrollo de aplicaciones multiplataforma 1/2
PPT
Tema1
PPT
Desarrollo de sitios web con PHP y MySQL.ppt
PDF
PHP Tema 1 - Introducción
PPTX
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
PDF
Servidor Web Apache, PHP, MySQL.
PPTX
Meetup V.E.No.M. y docker
PPTX
Docker 2014 v2
Clase 3 instalación y primeros pasos
Magallanes, Herramienta de despliegue PHP sencilla y poderosa
Docker en el entorno de desarrollo
Integrando sonar
Aplicaciones web con php y my sql
Vagrant y Docker - Guía práctica de uso
Docker: la revolución en virtualización
Open Build Service
Instalación KOHA: desarrollo, requerimientos y configuración
Desarrollo de aplicaciones multiplataforma 1/2
Tema1
Desarrollo de sitios web con PHP y MySQL.ppt
PHP Tema 1 - Introducción
ASP.NET 5 en Linux y Mac OS X: herramientas e integración
Servidor Web Apache, PHP, MySQL.
Meetup V.E.No.M. y docker
Docker 2014 v2
Publicidad

Último (11)

DOCX
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
PPTX
Fundamentos de Python - Curso de Python dia 1
PPTX
sistemas de informacion.................
PPTX
Derechos_de_Autor_y_Creative_Commons.pptx
PDF
Clase 3 - Presentación visual (Insertando objetos visuales) POWER POINT.pdf
PPTX
Implementación equipo monitor12.08.25.pptx
PDF
AutoCAD Herramientas para el futuro, Juan Fandiño
PPTX
Conceptos basicos de Base de Datos y sus propiedades
PDF
Su punto de partida en la IA: Microsoft 365 Copilot Chat
PPTX
ORIGEN DE LA IA - GRADO 1102 INTELIGENCIA
PPTX
Tratará sobre Grafos_y_Arboles_Presentacion.pptx
trabajo programacion.docxxdxxxddxdxxdxdxxxdxxdxdxd
Fundamentos de Python - Curso de Python dia 1
sistemas de informacion.................
Derechos_de_Autor_y_Creative_Commons.pptx
Clase 3 - Presentación visual (Insertando objetos visuales) POWER POINT.pdf
Implementación equipo monitor12.08.25.pptx
AutoCAD Herramientas para el futuro, Juan Fandiño
Conceptos basicos de Base de Datos y sus propiedades
Su punto de partida en la IA: Microsoft 365 Copilot Chat
ORIGEN DE LA IA - GRADO 1102 INTELIGENCIA
Tratará sobre Grafos_y_Arboles_Presentacion.pptx

Composer & SemVer

  • 1. Composer & SemVer Symfony Zaragoza By Alejandro Celaya @acelayaa
  • 2. Evolución de PHP - Proyectos y estándares modernos. http://www.php-fig.org/ - Desarrollo de componentes antes que frameworks.
  • 3. ¿Qué es composer? - Gestor de dependencias para proyectos PHP. https://packagist.org/ - Otros: PEAR, Maven, Gradle, RubyGems, Bundler, npm… - “Composer is strongly inspired by node's npm and ruby's bundler”.
  • 4. ¿Qué resuelve composer? - Gestión de dependencias (de forma recursiva) - Actualización de dependencias - Autoloading propio y de terceros
  • 5. El estándar de Semantic Versioning - SemVer: http://semver.org/ - Version 2.0.0: MAJOR.MINOR.PATCH
  • 6. SemVer aplicado a composer - Muchos proyectos PHP siguen el estándar de SemVer. - Mecanismos para asegurarnos de qué versión vamos a instalar. "vendor/package": "1.2.3" "vendor/package": "2.0.*" "vendor/package": ">=2.0" "vendor/package": "~1.4"
  • 7. Instalar composer - Documentación de la web. curl -sS https://getcomposer.org/installer | php - De forma global. chmod +x composer.phar mv composer.phar /usr/local/bin/composer
  • 8. Configuración de composer { "name": "symfony-zgz/silex-skeleton", "description": "...", "license": "MIT", "type": "project", "require": { "php": ">=5.5", "silex/silex": "~1.0", "silex/web-profiler": "~1.0", "symfony/browser-kit": "~2.3", "symfony/class-loader": "~2.3", // ... "doctrine/orm": "~2.0", "zendframework/zend-stdlib": "~2.3" }, "require-dev": { "phpunit/phpunit": "~4.0", "squizlabs/php_codesniffer": "~1.0" }, "autoload": { "psr-4": { "SymfonyZgz": "src/" } }, "autoload-dev": { "psr-4": { "SymfonyZgzTest": "tests/" } } }
  • 9. Configuración de composer - No hay que memorizar la estructura. composer init
  • 10. Bloques importantes require y require-dev: - Lista de componentes a instalar y su versión
  • 11. Bloques importantes autoload y autoload-dev: - Reglas para cargar clases de forma automática. - Opciones: psr-0, psr-4, classmap y files.
  • 12. Comandos principales - Instalar dependencias por primera vez. composer install - Actualizar dependencias a la última versión válida. composer update - Actualizar el binario de composer. composer self-update - Regenerar el autoloader. composer dump-autoload
  • 13. Otros usos (avanzados) Agregar dependencias - No editar composer.json - Requerir el componente para instalarlo. composer require vendor/package:~1.0 - Instalarlo de forma global. composer global require vendor/package:~1.0
  • 14. Otros usos (avanzados) Optimizar autoloader: - Optimizar el rendimiento del autoloader para producción. composer dump-autoload --optimize - Se generará un classmap en vez de iterar directorios.
  • 15. Otros usos (avanzados) Dependencias de producción: - No instalar los componentes de require-dev. composer update --no-dev - Descargamos el autoloader y reducimos tamaño final. - Con --optimize-autoloader generamos el classmap autoloader en el mismo paso.
  • 16. Otros usos (avanzados) Repositorios privados: - Permiten instalar dependencias de fuentes distintas a packagist. "repositories": [ { "type": "vcs", "url": "https://github.com/acelaya/composer-semver-talk.git" } ]
  • 17. Otros usos (avanzados) Dependencias de PHP: - Indicar que dependemos de una extensión o versión de PHP determinados. "require": { "php": ">=5.5", "ext-intl": "*", "ext-sqlite": "*", // ... },
  • 18. Otros usos (avanzados) CLI scripts: - Scripts del proyecto para ejecutar desde consola. "bin": [ "bin/print-something", "bin/do-something" ]
  • 19. Otros usos (avanzados) Eventos: - Callbacks y comandos que se ejecutan en momentos determinados. "scripts": { "post-package-install": "SymfonyZgzMyClass::postPkgInstall", "post-install-cmd": [ "SymfonyZgzMyClass::postInstall", "phpunit -c app/" ], }
  • 20. Otros usos (avanzados) Instalación de proyectos: - Podemos distribuir proyectos enteros mediante composer. composer create-project vendor/package
  • 21. "require": { "php": ">=5.5.0", "slim/slim": "~2.4", "slim/views": "0.1.*", "slimcontroller/slimcontroller": "~0.4", "apache/log4php": "2.3.*", "doctrine/orm": "2.4.*", "doctrine/doctrine-module": "0.*", "symfony/yaml": "2.*", "symfony/process": "~2.4", "symfony/console": "~2.4", "league/flysystem": "0.5.*", "aws/aws-sdk-php": "~2.5", "zendframework/zend-form": "2.3.*", "zendframework/zend-i18n": "2.3.*", "zendframework/zend-servicemanager": "2.3.*", "zendframework/zend-authentication": "2.3.*", "zendframework/zend-session": "2.3.*", "zendframework/zend-stdlib": "2.3.*", "swiftmailer/swiftmailer": "5.2.*", "endroid/qrcode": "1.2.*", "twig/twig": "1.*", "twig/extensions": "~1.1.0", "dompdf/dompdf": "0.6.*", "cocur/slugify": "~0.11" } Ejemplo
  • 22. Enlaces - Composer: https://getcomposer.org/ - SemVer: http://semver.org/ - Packagist: https://packagist.org/ - PHP-FIG: http://www.php-fig.org/ - Ejemplo: https://github.com/acelaya/composer-semver-talk - SemVer checker: https://github.com/tomzx/php-semver-checker - The PHP League: http://thephpleague.com/