Skip to content
Roberto L. Machado edited this page Mar 28, 2015 · 16 revisions

O composer é uma excelente ferramenta disponível para usuários e desenvolvedores de PHP, permiti que sejam instalados pacotes (bibliotecas, frameworks, classes, etc.) com comandos simples.

Pré-requisitos (para composer e o NFePHP)

apt-get install curl php5 php5-cli php5-gd php5-curl php5-mcrypt php5-xdebug 

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.

Configuração

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.