Disponibilizando dependências PHP com Composer, GitHub e Packagist

656 visualizações

Publicada em

O minicurso apresentado durante o evento FLISOL (Festival Latino-americano de Instalação de Software Livre) 2015, em São Carlos/SP, demonstra como é possível criar e disponibilizar pacotes em PHP com Composer, usando o padrão PSR-4 definido pelo PHP Framework Interop Group, através do repositório GitHub e Packagist.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
656
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
9
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Disponibilizando dependências PHP com Composer, GitHub e Packagist

  1. 1. Disponibilizando dependências PHP com Composer, GitHub e Packagist
  2. 2. Thiago Henrique Poiani Mestrando em Ciências da Computação Especialização em Desenvolvimento de Software para Web Tecnologia em Análise e Desenvolvimento de Sistemas
  3. 3. Thiago Henrique Poiani Background PHP, C#, Java JavaScript, Node.JS, AngularJS MySQL, PostgreSQL, MongoDB HTML5, CSS3, SASS Composer, Bower, npm Grunt Mocha, PHPUnit
  4. 4. Contatos thpoiani.com.br thpoiani@gmail.com github.com/thpoiani linkedin.com/in/thpoiani Thiago Henrique Poiani
  5. 5. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Apresentações http://bit.ly/ flisol-2015-disponibilizando-dependencias-php
  6. 6. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Agenda ☐ Controle de Versão ☐ Git ☐ Gerenciamento de Dependências ☐ Composer ☐ PHP ☐ FIG ☐ PSR-4 ☐ Disponibilizar dependência ☐ GitHub ☐ Packagist
  7. 7. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Agenda ☐ Controle de Versão ☐ Git ☐ Gerenciamento de Dependências ☐ Composer ☐ PHP ☐ FIG ☐ PSR-4 ☐ Disponibilizar dependência ☐ GitHub ☐ Packagist
  8. 8. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Controle de Versão Concurrent Version System Subversion Mercurial Git
  9. 9. Controle de Versão Stack Overflow. Why Should I Use Version Control?. Disponível em: http://stackoverflow.com/a/1408464
  10. 10. Controle de Versão
  11. 11. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Agenda ☒ Controle de Versão ☐ Git ☐ Gerenciamento de Dependências ☐ Composer ☐ PHP ☐ FIG ☐ PSR-4 ☐ Disponibilizar dependência ☐ GitHub ☐ Packagist
  12. 12. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Controle de Versão - Git http://git-scm.com/
  13. 13. Controle de Versão - Git nvie.com. A successful Git branching model. Disponível em: http://nvie.com/posts/a-successful-git-branching-model/
  14. 14. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Controle de Versão - Git GitHub
  15. 15. Controle de Versão - Git
  16. 16. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Controle de Versão - Git $ git clone https://github.com/thpoiani/flisol-2015.git $ cd flisol-2015/ $ echo "<?php echo 'Hello World'; ?>" > index.php $ php index.php $ sudo apt-get install php5-cli
  17. 17. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Controle de Versão - Git $ git status $ git add index.php $ git commit -m "Hello World" git config --global user.email "you@example.com" git config --global user.name "Your Name" $ git push origin master git config --global push.default simple
  18. 18. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Agenda ☒ Controle de Versão ☒ Git ☐ Gerenciamento de Dependências ☐ Composer ☐ PHP ☐ FIG ☐ PSR-4 ☐ Disponibilizar dependência ☐ GitHub ☐ Packagist
  19. 19. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Gerenciamento de Dependências Controle da versão da dependência Dependências apenas para desenvolvimento Padronização da estrutura do projeto Não reinventar a roda
  20. 20. Gerenciamento de Dependências
  21. 21. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Agenda ☒ Controle de Versão ☒ Git ☒ Gerenciamento de Dependências ☐ Composer ☐ PHP ☐ FIG ☐ PSR-4 ☐ Disponibilizar dependência ☐ GitHub ☐ Packagist
  22. 22. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Gerenciamento de Dependências - Composer https://getcomposer.org/
  23. 23. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Gerenciamento de Dependências - Composer $ curl -sS https://getcomposer.org/installer | php $ php composer.phar init
  24. 24. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Gerenciamento de Dependências - Composer composer.json { "name": "thpoiani/flisol-2015", "license": "MIT", "authors": [ { "name": "Thiago Henrique Poiani", "email": "thpoiani@gmail.com" } ], "require": {} }
  25. 25. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Gerenciamento de Dependências - Composer composer.json "require": { "symfony/translation": "2.6.6" } $ php composer.phar install $ php composer.phar update
  26. 26. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Gerenciamento de Dependências - Composer vendor/ pasta com as dependências vendor/autoload.php função responsável por realizar o __autoload vendor/composer/autoload_* definição dos namespaces
  27. 27. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Gerenciamento de Dependências - Composer Como uso a dependência instalada? require("vendor/autoload.php");
  28. 28. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani index.php <?php require("vendor/autoload.php"); echo 'Hello World'; ?> Gerenciamento de Dependências - Composer
  29. 29. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Gerenciamento de Dependências - Composer require("vendor/autoload.php"); use SymfonyComponentTranslationTranslator; use SymfonyComponentTranslationLoaderArrayLoader;
  30. 30. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Gerenciamento de Dependências - Composer $translator = new Translator(null); $translator->addLoader('array', new ArrayLoader()); $translator->addResource('array', array('Hello World' => 'Olá Mundo'), 'pt' ); $translator->addResource('array', array('Hello World' => 'Hola Mundo'), 'es' );
  31. 31. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Gerenciamento de Dependências - Composer echo $translator->trans('Hello World');
  32. 32. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani $language = isset($argv[1]) ? $argv[1] : null; $translator->setLocale($language); echo $translator->trans('Hello World'); Gerenciamento de Dependências - Composer
  33. 33. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani $ php index.php $ php index.php pt $ php index.php es Gerenciamento de Dependências - Composer
  34. 34. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani $ git status Gerenciamento de Dependências - Composer
  35. 35. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Gerenciamento de Dependências - Composer Deixe a pasta vendor/ fora do seu repositório .gitignore vendor/
  36. 36. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani $ git status $ git add --all $ git commit -m "i18n" $ git push origin master Gerenciamento de Dependências - Composer
  37. 37. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Agenda ☒ Controle de Versão ☒ Git ☒ Gerenciamento de Dependências ☒ Composer ☐ PHP ☐ FIG ☐ PSR-4 ☐ Disponibilizar dependência ☐ GitHub ☐ Packagist
  38. 38. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani PHP 5.3 Namespace are a way of encapsulating items. PHP Manual. Namespaces overview. Disponível em: http://php.net/manual/en/language.namespaces.rationale. php
  39. 39. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Agenda ☒ Controle de Versão ☒ Git ☒ Gerenciamento de Dependências ☒ Composer ☒ PHP ☐ FIG ☐ PSR-4 ☐ Disponibilizar dependência ☐ GitHub ☐ Packagist
  40. 40. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani PHP - FIG PHP Framework Interop Group PSR-0 Autoloading Standard PSR-1 Basic Coding Standard PSR-2 Coding Style Guide PSR-3 Logger Interface PSR-4 Improved Autoloading PHP-FIG — PHP Framework Interop Group. Disponível em: http://www.php-fig.org/
  41. 41. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani PHP - FIG PHP Framework Interop Group PSR-0 Autoloading Standard PSR-1 Basic Coding Standard PSR-2 Coding Style Guide PSR-3 Logger Interface PSR-4 Improved Autoloading PHP-FIG — PHP Framework Interop Group. Disponível em: http://www.php-fig.org/
  42. 42. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Agenda ☒ Controle de Versão ☒ Git ☒ Gerenciamento de Dependências ☒ Composer ☒ PHP ☒ FIG ☐ PSR-4 ☐ Disponibilizar dependência ☐ GitHub ☐ Packagist
  43. 43. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani PHP PSR-4 Namespace <?php <NamespaceName>(<SubNamespaceNames>)*<ClassName>
  44. 44. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani PHP PSR-4 Namespace <?php <NamespaceName>(<SubNamespaceNames>)*<ClassName> use SymfonyComponentTranslationTranslator;
  45. 45. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani PHP PSR-4 Namespace <?php <NamespaceName>(<SubNamespaceNames>)*<ClassName> use SymfonyComponentTranslationTranslator; /vendor/symfony/translation/Symfony/Component/Translation/Translator.php
  46. 46. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani PHP PSR-4 Vamos desenvolver
  47. 47. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Agência de Viagens $ mkdir src/Funcionario -p $ mkdir src/Utils -p
  48. 48. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani src/Utils/Dicionario.php <?php namespace AgenciaDeViagensUtils; use SymfonyComponentTranslationTranslator; use SymfonyComponentTranslationLoaderArrayLoader; class Dicionario {
  49. 49. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani src/Utils/Dicionario.php class Dicionario { private $translator; public function __construct($language) { } public function consultar($texto) { } }
  50. 50. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani src/Utils/Dicionario.php public function __construct($language) { $this->translator = new Translator(null); $this->translator->addLoader('array', new ArrayLoader()); $this->translator->addResource('array', array('Hello World' => 'Olá mundo'), 'pt' ); $this->translator->addResource('array', array('Hello World' => 'Hola Mundo'), 'es' ); $this->translator->setLocale($language); }
  51. 51. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani src/Utils/Dicionario.php public function consultar($texto) { return $this->translator->trans($texto); }
  52. 52. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani src/Funcionario/Atendente.php <?php namespace AgenciaDeViagensFuncionario; use AgenciaDeViagensUtilsDicionario; class Atendente { public function falar(Dicionario $dicionario, $texto) { return $dicionario->consultar($texto); } }
  53. 53. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani index.php <?php require("vendor/autoload.php"); require("src/Funcionario/Atendente.php"); require("src/Utils/Dicionario.php"); use AgenciaDeViagensUtilsDicionario; use AgenciaDeViagensFuncionarioAtendente;
  54. 54. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani index.php $language = isset($argv[1]) ? $argv[1] : null; $atendente = new Atendente(); $dicionario = new Dicionario($language); echo $atendente->falar($dicionario, 'Hello World');
  55. 55. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani $ php index.php $ php index.php pt $ php index.php es PHP PSR-4
  56. 56. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani $ git status $ git add --all $ git commit -m "Agência de Viagens" $ git push origin master PHP PSR-4
  57. 57. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Autoloading com Composer composer.json "autoload": { "psr-4": { "AgenciaDeViagens": "src/" } } PHP PSR-4
  58. 58. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani $ php composer.phar update /vendor/composer/autoload_psr4.php PHP PSR-4
  59. 59. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani require("vendor/autoload.php"); // require("src/Funcionario/Atendente.php"); // require("src/Utils/Dicionario.php"); use AgenciaDeViagensUtilsDicionario; use AgenciaDeViagensFuncionarioAtendente; index.php
  60. 60. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani $ git status $ git add --all $ git commit -m "Composer Autoload" $ git push origin master PHP PSR-4
  61. 61. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Agenda ☒ Controle de Versão ☒ Git ☒ Gerenciamento de Dependências ☒ Composer ☒ PHP ☒ FIG ☒ PSR-4 ☐ Disponibilizar dependência ☐ GitHub ☐ Packagist
  62. 62. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Disponibilizar dependência Exploring Data. npm Packages Dependencies Graph. http://exploringdata.github.io/vis/npm-packages- dependencies/
  63. 63. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Agenda ☒ Controle de Versão ☒ Git ☒ Gerenciamento de Dependências ☒ Composer ☒ PHP ☒ FIG ☒ PSR-4 ☒ Disponibilizar dependência ☐ GitHub ☐ Packagist
  64. 64. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Disponibilizar dependência - GitHub É possível disponibilizar a dependência através do GitHub, usando o seguinte atributo no composer.json
  65. 65. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Disponibilizar dependência - GitHub composer.json "repositories": [ { "type": "git", "url": "https://github.com/thpoiani/flisol2015" } ], "require": { "thpoiani/flisol-2015": "dev-master" }
  66. 66. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Disponibilizar dependência - GitHub Mas, para isso é necessário uma chave SSH Homework
  67. 67. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Agenda ☒ Controle de Versão ☒ Git ☒ Gerenciamento de Dependências ☒ Composer ☒ PHP ☒ FIG ☒ PSR-4 ☒ Disponibilizar dependência ☒ GitHub ☐ Packagist
  68. 68. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Disponibilizar dependência - Packagist Repositório de dependências Packagist - https://packagist.org
  69. 69. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Disponibilizar dependência - Packagist Popular Packages psr/log monolog/monolog symfony/event-dispatcher symfony/console swiftmailer/swiftmailer phpunit/php-code-coverage symfony/yaml phpunit/php-token-stream phpunit/phpunit
  70. 70. Disponibilizar dependência - Packagist
  71. 71. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Disponibilizar dependência - Packagist https://github.com/thpoiani/flisol-2015/settings WebHooks & Services Services User Token Test Service
  72. 72. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Agenda ☒ Controle de Versão ☒ Git ☒ Gerenciamento de Dependências ☒ Composer ☒ PHP ☒ FIG ☒ PSR-4 ☒ Disponibilizar dependência ☒ GitHub ☒ Packagist
  73. 73. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani $ mkdir agencia-de-viagens $ curl -sS https://getcomposer.org/installer | php $ php composer.phar init composer.json "require": { "thpoiani/flisol-2015": "dev-master" } $ php composer.phar install
  74. 74. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani index.php <?php require("vendor/autoload.php"); use AgenciaDeViagensFuncionarioAtendente; echo get_class(new Atendente());
  75. 75. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Homework Criar uma versão estável (tag) do código no GitHub
  76. 76. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Homework Criar uma versão estável (tag) do código no GitHub Mudar o require do seu código no composer.json para a versão estável
  77. 77. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Homework Criar uma versão estável (tag) do código no GitHub Mudar o require do seu código no composer.json para a versão estável Desenvolver uma dependência que esteja no TOP 10 do Packagist
  78. 78. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Obrigado http://bit.ly/ flisol-2015-disponibilizando-dependencias-php-final

×