everton3x / librarian
Importador de bibliotecas PHP ao estilo do Python Import System.
This package is auto-updated.
Last update: 2020-03-19 17:04:29 UTC
README
Um importador de bibliotecas PHP no estilo Python Import System.
O que librarian faz?
librarian provê uma forma de "inclusão automática" de arquivos PHP com funções (ou qualquer outro código PHP, inclusive classes) de forma seletiva, a exemplo do Python system import.
Ele aprimora o sistema de include/require do PHP possibilitando ao desenvolvedor economia de código evitando uma longa série de include/require.
librariam é igual ao Composer?
Não! Inclusive é recomendado que se utilize librarian através do Composer.
Por que não utilizar o Composer então?
Porque o Composer foi construído para fazer o autoloading de classes PHP, entre outras coisas. Porém ele não fornece nesse ponto (autoloading) uma facilidade maior para quem precisa lidar com muitos include/require.
Embora o Composer disponibilize a diretiva files, para utilizá-la, é preciso configurar manualmente todos os arquivos desejados e esses serão sempre carregados.
Com librarian você pode, em cada parte do código ou script, carregar apenas os que será utilizado.
Requisitos
Os requisitos do librarian são:
- PHP 7.1 ou superior
- Composer (se for instalar e utilizar conforme o tópico Instalação
Instalação
O método de instalação recomendado é via Composer:
composer require everton3x/librarian
No arquivo composer.json coloque a seguinte diretiva de configuração:
{ "autoload": { "files": ["vendor/librarian/src/librarian.php"] } }
Depois, atualize o Composer com composer update
.
Pronto, agora você já tem o librarian habilitado nos arquivos PHP que você utiliza vendor/autoload.php
.
Uso:
librarian trabalha com dois conceitos básicos: módulo e pacote.
Um módulo corresponde a um arquivo PHP com definições de funções (embora você possa ter qualquer coisa dentro do arquivo, já que librarian apensa importa o seu conteúdo através de require_once()
).
pacote representa um caminho de diretório onde os arquivos módulos estão armazenados. É possível utilizar qualquer estrutura de diretório, porém, recomenda-se que se utilize o padrão PSR-4 replicando a estrutura de namespace utilizado para as funções em cada módulo.
Tendo em vista que librarian é inspirado o import do Python, ele segue uma lógica semelhante.
Para importar um pacote inteiro, faríamos assim (é claro que existem outras sintaxes possíves):
from mypackage.subpackage import *
Com librarian fazemos desta forma:
librarian\import()->from('mypackage.subpackage');
Onde mypackage.subpackage representa uma estrutura de diretório ./mypackage/subpackage/
Para importar apenas alguns módulos, fazemos assim:
librarian\import('module1', 'module2')->from('mypackage.subpackage');
Onde module1 e module2 correspondem aos arquivos ./mypackage/subpackage/module1.php e ./mypackage/subpackage/module2.php.
Também é possível buscar todos os módulos recursivamente:
librarian\import()->from('mypackage.subpackage.*');
Ou todos os módulos module1 e module2 recursivamente:
librarian\import('module1', 'module2')->from('mypackage.subpackage.*');
Licença
librarian é distribuído sob a licença MIT
Como contribuir
Para contribuir com o projeto, siga os seguintes passos:
- Faça um fork;
- Crie um branch específico para a sua contribuição;
- Envie um pull request.
Changelog
Utilizamos para as releases o Versionamento Semântico conforme Tom Preston-Werner.
Versão 0.1.0RC
Versão inicial com a implementação básica.
Nessa versão, os testes foram feitos de forma primitiva e ainda não houve uso em produção, ou seja, tudo pode mudar no futuro.
Roadmap
Versão 0.2.0
- Incluir suporte a caminho base para os pacotes.