Upload
thiago-henrique-poiani
View
95
Download
2
Embed Size (px)
Citation preview
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
BackgroundPHP, C#, JavaJavaScript, Node.JS, AngularJSMySQL, PostgreSQL, MongoDBHTML5, CSS3, SASS
Composer, Bower, npmGruntMocha, PHPUnit
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 SystemSubversionMercurialGit
Controle de Versão
Stack Overflow. Why Should I Use Version Control?. Disponível em: http://stackoverflow.com/a/1408464
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
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 "[email protected]"
git config --global user.name "Your Name"
$ git push origin mastergit 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ênciaDependências apenas para desenvolvimentoPadronização da estrutura do projetoNão reinventar a roda
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": "[email protected]"
}
],
"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 Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\Loader\ArrayLoader;
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 StandardPSR-1 Basic Coding StandardPSR-2 Coding Style GuidePSR-3 Logger InterfacePSR-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 StandardPSR-1 Basic Coding StandardPSR-2 Coding Style GuidePSR-3 Logger InterfacePSR-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 Symfony\Component\Translation\Translator;
FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani
PHP PSR-4
Namespace
<?php
\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
use Symfony\Component\Translation\Translator;/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 AgenciaDeViagens\Utils;
use Symfony\Component\Translation\Translator;
use Symfony\Component\Translation\Loader\ArrayLoader;
class Dicionario {
FLISol 2015 - Disponibilizando dependências PHP com Composer, GitHub e Packagist - Thiago Henrique Poiani
src/Utils/Dicionario.phpclass 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.phppublic 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.phppublic 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 AgenciaDeViagens\Funcionario;
use \AgenciaDeViagens\Utils\Dicionario;
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 AgenciaDeViagens\Utils\Dicionario;
use AgenciaDeViagens\Funcionario\Atendente;
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 AgenciaDeViagens\Utils\Dicionario;
use AgenciaDeViagens\Funcionario\Atendente;
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 Packagespsr/log
monolog/monolog
symfony/event-dispatcher
symfony/console
swiftmailer/swiftmailer
phpunit/php-code-coverage
symfony/yaml
phpunit/php-token-stream
phpunit/phpunit
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 & ServicesServices
UserToken
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 AgenciaDeViagens\Funcionario\Atendente;
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