SlideShare uma empresa Scribd logo
Disponibilizando
dependências PHP com
Composer, GitHub e Packagist
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
Thiago Henrique Poiani
Background
PHP, C#, Java
JavaScript, Node.JS, AngularJS
MySQL, PostgreSQL, MongoDB
HTML5, CSS3, SASS
Composer, Bower, npm
Grunt
Mocha, PHPUnit
Contatos
thpoiani.com.br
thpoiani@gmail.com
github.com/thpoiani
linkedin.com/in/thpoiani
Thiago Henrique Poiani
FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani
Apresentações
http://bit.ly/
flisol-2015-disponibilizando-dependencias-php
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
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
FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani
Controle de Versão
Concurrent Version System
Subversion
Mercurial
Git
Controle de Versão
Stack Overflow. Why Should I Use Version Control?. Disponível em: http://stackoverflow.com/a/1408464
Controle de Versão
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
FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani
Controle de Versão - Git
http://git-scm.com/
Controle de Versão - Git
nvie.com. A successful Git branching model. Disponível em: http://nvie.com/posts/a-successful-git-branching-model/
FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani
Controle de Versão - Git
GitHub
Controle de Versão - Git
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
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
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
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
Gerenciamento de Dependências
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
FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani
Gerenciamento de Dependências - Composer
https://getcomposer.org/
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
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": {}
}
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
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
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");
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
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;
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'
);
FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani
Gerenciamento de Dependências - Composer
echo $translator->trans('Hello World');
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
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
FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani
$ git status
Gerenciamento de Dependências - Composer
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/
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
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
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
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
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/
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/
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
FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani
PHP PSR-4
Namespace
<?php
<NamespaceName>(<SubNamespaceNames>)*<ClassName>
FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani
PHP PSR-4
Namespace
<?php
<NamespaceName>(<SubNamespaceNames>)*<ClassName>
use SymfonyComponentTranslationTranslator;
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
FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani
PHP PSR-4
Vamos desenvolver
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
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 {
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) { }
}
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);
}
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);
}
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);
}
}
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;
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');
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
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
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
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
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
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
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
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/
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
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
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"
}
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
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
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
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
Disponibilizar dependência - Packagist
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
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
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
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());
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
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
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
FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani
Obrigado
http://bit.ly/
flisol-2015-disponibilizando-dependencias-php-final

Mais conteúdo relacionado

PPT
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...
PPT
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...
PDF
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
PDF
Aplicações 12 fatores, melhor com Docker
PDF
Python e Golang - Parte 1
PDF
Git Overview: Grupo RBS
PDF
Por que jenkins se posso usar deployer php
PDF
Introdução ao Git + Workshop
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - Campinas...
.NET Core e ASP.NET Core: Presente e Futuro - .NET Conf Local 2018 - .NET SP ...
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Aplicações 12 fatores, melhor com Docker
Python e Golang - Parte 1
Git Overview: Grupo RBS
Por que jenkins se posso usar deployer php
Introdução ao Git + Workshop

Destaque (16)

PDF
Gerenciamento de dependências em PHP com o Composer
PDF
Composer para Gestão de Dependências - Encontro PHP - Season
PDF
Composer The Right Way - PHPUGMRN
PDF
MongoDB Introdução
PPTX
Bluetooth
PDF
Desenvolvimento colaborativo e publicação de Sistemas de Informações Geográfi...
PPTX
Acesso direto à memória
PDF
Ebook vocabulary english_vocab_in_use_elementary
ODP
Mutexes, Monitores e Semáforos
PPT
History of translstudies
PPT
Translation
PDF
Part 1 cambridge preparation to the toefl ibt
PDF
DOMinando JavaScript
PPTX
Translation theory
PPTX
History of translation studies
PPT
Aula gerenciamento de arquivos e pastas
Gerenciamento de dependências em PHP com o Composer
Composer para Gestão de Dependências - Encontro PHP - Season
Composer The Right Way - PHPUGMRN
MongoDB Introdução
Bluetooth
Desenvolvimento colaborativo e publicação de Sistemas de Informações Geográfi...
Acesso direto à memória
Ebook vocabulary english_vocab_in_use_elementary
Mutexes, Monitores e Semáforos
History of translstudies
Translation
Part 1 cambridge preparation to the toefl ibt
DOMinando JavaScript
Translation theory
History of translation studies
Aula gerenciamento de arquivos e pastas
Anúncio

Semelhante a Disponibilizando dependências PHP com Composer, GitHub e Packagist (20)

PDF
Composer dependency manager - TDC - POA 2017
PDF
Distribua seu código
PDF
PHP e DevOps: De Localhost a Produção com Segurança e Confiabilidade
PDF
WP Composer
PDF
Composer dependency manager
PDF
Programação Multiplataforma em Ambiente Web
PDF
Prepare-se para o próximo estágio da evolução PHP
PDF
PHP like a super hero
PDF
Drupal Camp Campinas 2016 - Composer 101 e sua integração com drupal 8
PPTX
Phalcon FrameWork - Considerações Iniciais
PPTX
Symfony Flex & Dependency Injection @ Symfony Live São Paulo 2019
PDF
Integração Contínua com Cruise Control e phpUnderControl
PDF
Consegi 2011: Puppet
PDF
Introdução a Frameworks
PDF
Evolucao php2
PDF
PHP Experience 2016 - [Palestra] Keynote: PHP-7
PDF
O futuro do elephante: as promessas do php para 2019
PDF
Composer - tricks and tips
PPT
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008
Composer dependency manager - TDC - POA 2017
Distribua seu código
PHP e DevOps: De Localhost a Produção com Segurança e Confiabilidade
WP Composer
Composer dependency manager
Programação Multiplataforma em Ambiente Web
Prepare-se para o próximo estágio da evolução PHP
PHP like a super hero
Drupal Camp Campinas 2016 - Composer 101 e sua integração com drupal 8
Phalcon FrameWork - Considerações Iniciais
Symfony Flex & Dependency Injection @ Symfony Live São Paulo 2019
Integração Contínua com Cruise Control e phpUnderControl
Consegi 2011: Puppet
Introdução a Frameworks
Evolucao php2
PHP Experience 2016 - [Palestra] Keynote: PHP-7
O futuro do elephante: as promessas do php para 2019
Composer - tricks and tips
Depurando Aplicações PHP com XDebug e FirePHP - SETI 2008
Anúncio

Último (19)

PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Processos na gestão de transportes, TM100 Col18
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Aula04-Academia Heri- Tecnologia Geral 2025
COBITxITIL-Entenda as diferença em uso governança TI
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Custos e liquidação no SAP Transportation Management, TM130 Col18
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Processos na gestão de transportes, TM100 Col18
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Apple Pippin Uma breve introdução. - David Glotz
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Aula 18 - Manipulacao De Arquivos python
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss

Disponibilizando dependências PHP com Composer, GitHub e Packagist

  • 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. Thiago Henrique Poiani Background PHP, C#, Java JavaScript, Node.JS, AngularJS MySQL, PostgreSQL, MongoDB HTML5, CSS3, SASS Composer, Bower, npm Grunt Mocha, PHPUnit
  • 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. 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. 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. 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. Controle de Versão Stack Overflow. Why Should I Use Version Control?. Disponível em: http://stackoverflow.com/a/1408464
  • 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. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Controle de Versão - Git http://git-scm.com/
  • 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. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Controle de Versão - Git GitHub
  • 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. 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. 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. 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
  • 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. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Gerenciamento de Dependências - Composer https://getcomposer.org/
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani $ git status Gerenciamento de Dependências - Composer
  • 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. 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. 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. 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. 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. 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. 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. 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. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani PHP PSR-4 Namespace <?php <NamespaceName>(<SubNamespaceNames>)*<ClassName>
  • 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. 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. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani PHP PSR-4 Vamos desenvolver
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  • 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. 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. 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. 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. 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. 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. 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. FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani Obrigado http://bit.ly/ flisol-2015-disponibilizando-dependencias-php-final