LARAVEL::Utilizando rotas armazenadas no banco de dados

Logo Laravel

LARAVEL::Utilizando rotas armazenadas no banco de dados

Existem alguns pacotes para efetuar esse trabalho no Laravel, e talvez você até conheça algum deles. Mas quero apresentar um novo projeto que estou desenvolvendo e que já está em uso em algumas aplicações em cliente. Por isso a ideia estar sendo aprimorado aqui. A licença é MIT e você poderá contribuir para o desenvolvimento deste pacote. Ele ainda não está no Packagist, apenas no github: https://github.com/alxbbarbosa/auto-route

Recebeu o nome de AutoRoute DB. Não encontrei nenhum pacote com esse nome mas se houver é mera coincidência e não há nenhum problema para mim eleger outro nome para ele, visto que acabou de ser publicado.

Conheça o AutoRoute DB

AutoRoute DB é um pacote para carregamento das rotas no Laravel a partir do banco de dados.

No momento que foi publicado (11/06/2019) estava funcionando adequadamente para Postgres porque tem sido desenvolvido em um ambiente com Postgres. Mas foi implementado também para MySQL, embora ainda esteja em desenvolvimento e não tenha testado por completo.

Pré-requisitos

PHP 7.x e Laravel 5.x

Instalando

Por enquanto ainda não está Packagist. Então a instalação não está sendo toda automatizada pelo composer. Siga o passo-a-passo seguinte para fazer o processo manual.

Você pode fazer o clone deste código e salvar direto no diretório vendor. Os procedimentos abaixo estão esperando que, caso no momento que código tenha sido clonado, se não houver o diretório seguinte você o crie:

abbarbosa

Deverá fazer o clone deste projeto para este diretório. Uma estrutura semelhante a esta deverá existir e note se diretórios não ficaram aninhados com o mesmo nome:

(diretório do projeto)
          |
          |
        vendor
          |
          \--> abbarbosa
                 |
                 \--> auto-route
                        |
                        +--> migrations
                        |
                        +--> seeders
                        |
                        +--> src
                              |
                              \--> ... (demais arquivos do código)

Se você tiver experiencia com composer, poderá salvar onde achar conveniente.

Visto que, o pacote não ainda está sendo instalado pelo composer, o trabalho deverá ser todo manual. Você deverá adicionar ao composer.json as linhas, conforme a sessão abaixo:


"psr-4": {
            "App\\": "app/",

            "Abbarbosa\\infoDynamics\\AutoRoute\\Providers\\": "vendor/abbarbosa/auto-route/src/class/provider/",
            "Abbarbosa\\infoDynamics\\AutoRoute\\Services\\": "vendor/abbarbosa/auto-route/src/class/services/",
            "Abbarbosa\\infoDynamics\\AutoRoute\\Model\\": "vendor/abbarbosa/auto-route/src/class/model/",
            "Abbarbosa\\infoDynamics\\Contracts\\": "vendor/abbarbosa/auto-route/src/contracts/",
            "Abbarbosa\\infoDynamics\\AutoRoute\\Facade\\": "vendor/abbarbosa/auto-route/src/class/facade/"
        }

Note que as definições de caminho acima se referem a locais onde as classes foram salvas conforme a estapa anterior. Feito isso, rote no terminal o comando:


composer dump-autoload

Se tudo estiver ok, nenhuma saída de erro será gerada. Caso ocorra algum erro, você deverá verificar se o caminho onde salvou o pacote, condiz com a configuração do composer.

Após isso, configure o arquivo config/app.php do Laravel, adicionando o provider (Note que parte do código foi omitido, deixando apenas as informações relevantes)


   /*
    |--------------------------------------------------------------------------
    | Autoloaded Service Providers
    |--------------------------------------------------------------------------
    |
    | The service providers listed here will be automatically loaded on the
    | request to your application. Feel free to add your own services to
    | this array to grant expanded functionality to your applications.
    |
   */
  'providers' => [
      /*
       * Laravel Framework Service Providers...
       */
       
       ...

      /*
       * Application Service Providers...
       */

       ...

       \Abbarbosa\infoDynamics\AutoRoute\Providers\AutoRouteDbServiceProvider::class,

e a Facade (Note que parte do código foi omitido, deixando apenas as informações relevantes):


  /*
   |--------------------------------------------------------------------------
   | Class Aliases
   |--------------------------------------------------------------------------
   |
   | This array of class aliases will be registered when this application
   | is started. However, feel free to register as many as you wish as
   | the aliases are "lazy" loaded so they don't hinder performance.
   |
  */
 'aliases' => [

    ...

    'autoRoute'=> \Abbarbosa\infoDynamics\AutoRoute\Facade\AutoRoute::class,
  ],
];

A única linha que será necessário adicionar no arquivo web.php:


\Abbarbosa\infoDynamics\AutoRoute\Facade\AutoRoute::register();

Para concluir a configuração, será necessário copiar a migração do diretório migration e incluir no diretório migrations oficial do seu projeto.

Então após migrar, as configurações estarão concluídas. Para ajudar a criar rotas, há um seeder explicando cada coluna, oque deverá e o que não deverá ser preenchido conforme a criação.

Feito isso pode salvar todas suas rotas no banco de dados e ignorar completamente as entradas de rotas no arquivo web.php.

O código é recente ainda está em teste, mas você contribuir com seus comentários aqui para sugerir ou dizer se foi útil a você. Críticas construtivas são sempre bem-vindas.

[]’s

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.