PD
Integrar bibliotecas pelo composer no Adianti Framework 5
Fechado
Quando desenvolvemos uma aplicação de negócios, é normal precisarmos de pacotes de terceiros para realizar tarefas específicas, tais como: gerar gráficos, documentos, gerar boletos, notas fiscais, códigos de barras, e outros.
No início dos anos 2000, as formas mais comuns de integrar bibliotecas de terceiros em projetos PHP eram os repositórios PEAR e PHPClasses. PHPClasses é um repositório mantido pela comunidade, sem padronização e consistência entre os pacotes disponibilizados. PEAR foi o primeiro repositório de classes a seguir um certo nível de padronização e validação dos pacotes enviados. No entanto, foi a partir do ano de 2012, com o advento do Composer, que um ecossistema robusto de disponibilização de pacotes foi criado.
O Composer, lançado em 2012, é um gerenciador de dependências para PHP. Ele fornece um método padronizado para instalação de pacotes e dependências, e baseia-se fortemente no conceito de Namespaces, lançado com o PHP5.3 no início de 2012. Namespaces permitem o isolamento lógico entre os pacotes, evitando conflitos de declarações. O Composer não é um gerenciador de pacotes tal como o APT do Ubuntu. Ele também roda pela linha de comando, mas resolve dependências e instala pacotes para uso da aplicação, ou seja, bibliotecas de classes PHP. Para tal, ele utiliza o repositório de pacotes Packagist.
Para instalar o composer, em sistemas com o curl disponível, utilize o seguinte comando:
curl -sS https://getcomposer.org/installer | php
Após o composer estar instalado, você já pode instalar um pacote, com o seguinte comando:
php composer.phar require fzaninotto/faker
O comando "composer require" faz algumas coisas como:
- Instala a biblioteca no diretório vendor. Neste caso em vendor/fzaninotto/faker/
- Instala outros pacotes que a biblioteca necessita, também em vendor
- Escreve o arquivo composer.json, com todos pacotes instalados até o momento
- Escreve o arquivo vendor/autoload.php, que é um autoloader das classes instaladas
O arquivo composer.json é uma receita que contém todos pacotes instalados pelo composer, e possui o seguinte formato:
O Framework já acompanha alguns pacotes, por isso você verá ali alguns pacotes pré-instalados. Mesmo que você apague acidentalmente a pasta vendor, por meio do composer.json, conseguirá restaurar todos os pacotes com o comando "composer install".
O arquivo vendor/autoload.php é o carregador de classes para os pacotes instalados pelo Composer. Ele tem um conteúdo parecido com o exibido a seguir, podendo ser ligeiramente diferente, conforme o conjunto de bibliotecas instaladas.
Para que uma aplicação desenvolvida com o Framework possa utilizar os pacotes instalados pelo composer, o vendor/autoload.php precisa ser carregado, o que já é feito pelo init.php. Este trecho de código a seguir, importa o autoload e registra ele na pilha de autoloaders da biblioteca SPL do PHP. Isto já é feito desde a versão 5, portanto, não há nada que você precise fazer.
Então, para utilizar uma bibliteca do Composer, você só precisa instalar o composer, instalar o pacote, e utilizá-lo na aplicação. Para utilizar o Faker, por exemplo, que é uma biblioteca para geração de dados fictícios de pessoas, basta requisitar a biblioteca e sair usando:
Revisão dos passos:
1) Instalar o composer: curl -sS https://getcomposer.org/installer | php
2) Instalar o pacote: php composer.phar require fzaninotto/faker
3) Utilizar o pacote na aplicação.
No início dos anos 2000, as formas mais comuns de integrar bibliotecas de terceiros em projetos PHP eram os repositórios PEAR e PHPClasses. PHPClasses é um repositório mantido pela comunidade, sem padronização e consistência entre os pacotes disponibilizados. PEAR foi o primeiro repositório de classes a seguir um certo nível de padronização e validação dos pacotes enviados. No entanto, foi a partir do ano de 2012, com o advento do Composer, que um ecossistema robusto de disponibilização de pacotes foi criado.
O Composer, lançado em 2012, é um gerenciador de dependências para PHP. Ele fornece um método padronizado para instalação de pacotes e dependências, e baseia-se fortemente no conceito de Namespaces, lançado com o PHP5.3 no início de 2012. Namespaces permitem o isolamento lógico entre os pacotes, evitando conflitos de declarações. O Composer não é um gerenciador de pacotes tal como o APT do Ubuntu. Ele também roda pela linha de comando, mas resolve dependências e instala pacotes para uso da aplicação, ou seja, bibliotecas de classes PHP. Para tal, ele utiliza o repositório de pacotes Packagist.
Para instalar o composer, em sistemas com o curl disponível, utilize o seguinte comando:
curl -sS https://getcomposer.org/installer | php
Após o composer estar instalado, você já pode instalar um pacote, com o seguinte comando:
php composer.phar require fzaninotto/faker
O comando "composer require" faz algumas coisas como:
- Instala a biblioteca no diretório vendor. Neste caso em vendor/fzaninotto/faker/
- Instala outros pacotes que a biblioteca necessita, também em vendor
- Escreve o arquivo composer.json, com todos pacotes instalados até o momento
- Escreve o arquivo vendor/autoload.php, que é um autoloader das classes instaladas
O arquivo composer.json é uma receita que contém todos pacotes instalados pelo composer, e possui o seguinte formato:
{
"require": {
"fzaninotto/faker": "^1.7",
"phpmailer/phpmailer": "^6.0",
"tburry/pquery": "^1.1",
"picqer/php-barcode-generator": "^0.2.2",
"dompdf/dompdf": "^0.8.1",
"bacon/bacon-qr-code": "^1.0",
"phprtflite/phprtflite": "^1.3"
},
"require-dev": {
"phpunit/phpunit": "^7"
}
}
O Framework já acompanha alguns pacotes, por isso você verá ali alguns pacotes pré-instalados. Mesmo que você apague acidentalmente a pasta vendor, por meio do composer.json, conseguirá restaurar todos os pacotes com o comando "composer install".
O arquivo vendor/autoload.php é o carregador de classes para os pacotes instalados pelo Composer. Ele tem um conteúdo parecido com o exibido a seguir, podendo ser ligeiramente diferente, conforme o conjunto de bibliotecas instaladas.
- <?php
- // autoload.php @generated by Composer
- require_once __DIR__ . '/composer/autoload_real.php';
- return ComposerAutoloaderInit3403f6f57b1c5808f5595c77dea0e15d::getLoader();
- ?>
Para que uma aplicação desenvolvida com o Framework possa utilizar os pacotes instalados pelo composer, o vendor/autoload.php precisa ser carregado, o que já é feito pelo init.php. Este trecho de código a seguir, importa o autoload e registra ele na pilha de autoloaders da biblioteca SPL do PHP. Isto já é feito desde a versão 5, portanto, não há nada que você precise fazer.
- <?php
- $loader = require 'vendor/autoload.php';
- $loader->register();
- ?>
Então, para utilizar uma bibliteca do Composer, você só precisa instalar o composer, instalar o pacote, e utilizá-lo na aplicação. Para utilizar o Faker, por exemplo, que é uma biblioteca para geração de dados fictícios de pessoas, basta requisitar a biblioteca e sair usando:
- <?php
- class FakerView extends TPage
- {
- public function __construct()
- {
- parent::__construct();
- $faker = Faker\Factory::create();
- $output = '';
- $output .= '<b>Title</b>: ' . $faker->title . '<br>';
- $output .= '<b>Name</b>: ' . $faker->name . '<br>';
- $output .= '<b>State</b>: ' . $faker->state . '<br>';
- $output .= '<b>State Abbr</b>: ' . $faker->stateAbbr . '<br>';
- $output .= '<b>City</b>: ' . $faker->city . '<br>';
- $output .= '<b>Street Name</b>: ' . $faker->streetName . '<br>';
- $output .= '<b>Number</b>: ' . $faker->buildingNumber . '<br>';
- $output .= '<b>Country</b>: ' . $faker->country . '<br>';
- $panel = new TPanelGroup('Faker');
- $panel->add($output);
- parent::add($panel);
- }
- }
- ?>
Revisão dos passos:
1) Instalar o composer: curl -sS https://getcomposer.org/installer | php
2) Instalar o pacote: php composer.phar require fzaninotto/faker
3) Utilizar o pacote na aplicação.