everton3x/librarian

This package is abandoned and no longer maintained. No replacement package was suggested.

Importador de bibliotecas PHP ao estilo do Python Import System.

dev-master 2019-03-08 19:54 UTC

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:

  1. Faça um fork;
  2. Crie um branch específico para a sua contribuição;
  3. 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

  1. Incluir suporte a caminho base para os pacotes.