Git Product home page Git Product logo

lumen57-skeleton's Introduction

Arquitetura usando Laravel Lumen Framework PHP

Sugestão de arquitetura para uso do micro framework Laravel Lumen.

Laravel Lumen - Documentação

Clique no link para acessar a documentação do Laravel Lumen.

Artefatos propostos

Seguem os artefatos recomendados e suas responsabilidades:

  • Estrutura de pastas
.
├── app
│   ├── Console
│   │   └── Commands
│   ├── Contracts ***
│   ├── Events
│   ├── Exceptions
│   ├── Filters ***
│   ├── Http
│   │   ├── Controllers
│   │   └── Middleware
│   ├── Jobs
│   ├── Listeners
│   ├── Providers
│   ├── Repositories ***
│   └── Services ***
├── bootstrap
├── database
│   ├── factories
│   ├── migrations
│   └── seeds
├── public
├── resources
│   └── views
├── routes
├── storage
│   ├── app
│   ├── framework
│   │   ├── cache
│   │   └── views
│   └── logs
└── tests

*** Diretórios não existentes na estrutura padrão, criados para separar as responsabilidades destes artefatos. Parto do princípio que os artefatos padrões do Laravel Lumen já são conhecidos, onde abaixo estarei explicando somente os novos artefatos.

  • Contracts: Neste diretório ficam todas as Interfaces da aplicação. O ideal é que injeção de dependência no service container aconteça usando essas interfaces/contratos pois caso seja implementada outra classe/serviço para fazer o proposto pela interface/contrato, obrigatoriamente deverão ser implementados os métodos já definidos não necessitando alterar toda a aplicação que usa aquela classe/serviço. Clique aqui para mais informações.

  • Filters: Neste diretório ficam os filtros e validadores. Filtros são usados para filtrar dados baseados em formatações como trim, inteiro, alphanumérico, etc. Validadores são usado para validar o tipo do dado. É possível criar suas próprias formatações e validações como CPF, CNPJ, etc. Aconselhável uso do módulo Zend Filter do Zend Framework e Validator do Laravel. Este artefato geralmente é usado na camada de controller, filtrando e validando a requisição antes de seguir para as próximas camadas.

  • Services: Neste diretório ficam os serviços de domínio responsáveis por processar regras de negócio da aplicação.

  • Repositories: Neste diretório ficam os repositórios para persistência de dados. Geralmente eles são de persistência em banco de dados porém podem persistir em outros locais como arquivos locais e/ou externos como nuvem, outras aplicações, etc. No caso do Eloquent ele funciona como uma camada de abstração do model. Para hydratação e mapeamento, aconselhável o uso do módulo Zend Hydrator do Zend Framework. Neste diretório também ficam as entidades e coleções do domínio. É aconselhável o uso de adaptadores para diminuir o acoplamento entre as dependências.


Pensando em forma de camadas, o fluxo simples de dados seria algo como:

[>>  Request |-> Controller |-> Service |-> Repository  \
<<] Response <-| Controller <-| Service <-| Repository  /

IMPORTANTE

É fortemente indicado o uso de injeção de dependência. No caso do Laravel Lumen é recomendado usar o Service Provider.

Para usar a cobertura de código(code coverage) com PHPUnit é necessário instalar o xDebug.

License

The Lumen framework is open-sourced software licensed under the MIT license.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.