-
Notifications
You must be signed in to change notification settings - Fork 686
Usando o Composer
O composer é uma excelente ferramenta disponível para usuários e desenvolvedores de PHP, ele permite que sejam instalados pacotes (bibliotecas, frameworks, classes, etc.) com comandos simples.
apt-get install curl php5 php5-cli php5-gd php5-curl php5-mcrypt php5-xdebug git-core
Para instalar eu recomendo a instalação GLOBAL, dessa forma podemos ter várias aplicações em diferentes repositórios (ou pastas) usando um mesmo instalador (composer.phar). Para instalar globalmente execute como root:
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
Periodicamente você terá que atualizar esse arquivo do composer para isso é só executar, como root:
composer self-update
Muito bem, com o composer instalado vamos fazer uso dele em nossas aplicações. O composer possui uma enorme lista de pacotes a serem instalados e pode ser vista em Packagist para usar qualquer um desses pacotes você tem apenas que criar um arquivo denominado "composer.json", coloca-lo na raiz de seu sistema e executar:
composer install
Esse comando irá baixar e instalar todos os pacotes e suas dependências na pasta "vendor" e montar um arquivo "autoload.php" para permitir a localização automática de todas as classes. É isso mesmo, não será mais necessário nenhum "include" ou "require" em sua aplicação apenas um "use".
Quando você executar o comando acima, será criado também um arquivo composer.lock, na mesma pasta raiz, que será usado para as próximas atualizações dos pacotes (ou seja a próxima vez que usar o composer). Uma vez que os pacotes estejam carregados na pasta vendor e você quiser atualizar é só executar:
composer update
Caso hajam atualizações o sistema irá perguntar o deve fazer, se atualiza ou não o pacote, etc.
Bom já vimos a parte básica, mas para que isso funcione necessitamos do arquivo composer.json. Esse arquivo não é tão simples, mas também não é nenhum monstro. Existem vários tutotiais na internet sobre como monta-lo, segue um exemplo:
{
"name": "robmachado/hermes",
"description": "hermes devel",
"keywords": ["hermes", "devel"],
"license": "MIT",
"type": "project",
"require": {
"laravel/framework": "5.0.*",
"nfephp-org/nfephp": "dev-develop"
},
"require-dev": {
"phpunit/phpunit": "~4.0",
"phpspec/phpspec": "~2.1"
},
"autoload": {
"classmap": [
"database"
],
"psr-4": {
"robmachado\\hermes\\": "app/"
}
},
"autoload-dev": {
"classmap": [
"tests/TestCase.php"
]
},
"scripts": {
"post-install-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-update-cmd": [
"php artisan clear-compiled",
"php artisan optimize"
],
"post-create-project-cmd": [
"php -r \"copy('.env.example', '.env');\"",
"php artisan key:generate"
]
},
"config": {
"preferred-install": "dist"
}
}
O que mais interessa nesse arquivo são os campos "require" e "autoload" que vão definir os pacotes e como serão encontrados pelo autoload.
A partir da instalação todo o conteúdo da pasta "vendor" fica disponível para o uso de seu sistema, e não haverá repetição ou duplicação de pacotes (ou classes). Voce deve atentar para os possíveis erros devido a incompatibilidades de pacotes e garantir que apenas utilize os que são compatíveis entre si.
Então para usar a API NFePHP em sua versão develop é só incluir no require:
"require": {
"nfephp-org/nfephp": "dev-develop"
},
Vamos dizer que agora você quer usar o TCPDF do Nicola Asuni em sua aplicação, como seria feito ?
"require": {
"tecnick.com/tcpdf": "dev-master"
},
Após colocar o pacote desejado no composer.json é só executar novamente:
composer update
Próximo "Como usar o autoload"