Skip to content

Aplicação para estudo dos princípios SOLID (POO)

Notifications You must be signed in to change notification settings

lfgalindo/notification

Repository files navigation

Notification

Projeto elaborado utilizando o framework Laravel para estudo de SOLID.

Sobre

SOLID são os seguintes cinco princípios da programação orientada a objetos:

1- Single Responsiblity Principle Este projeto segue este princípio pois cada classe tem uma resposabilidade única.

2- Open-Closed Principle Neste projeto este princípio é utilizado por utilizar as interfaces e suas implementações. Por exemplo:

  • Os Controllers não se relacionam diretamente com as Models, temos uma interface de Repositórios entre essas duas camadas.
  • A facade Http do Laravel não é utilizada diretamente.

3- Liskov Substitution Principle Aplicado na interface "PersonRepository" que extende a interface "AllDB"

4- Interface Segregation Principle Todos os métodos implementados por meio de uma inteface são necessários.

5- Dependency Inversion Principle Com exceção dos objetos próprios as injeções de dependencia foram feitas com abstrações.

Requisitos

  • PHP instalado (testado com a v8.0.5).
  • Git instalado.
  • Composer instalado.

Instalação

Para instalar e utilizar este projeto basta seguir os seguintes passos:

  1. Clone o repositório:
    git clone https://github.com/lfgalindo/notification

  2. Entre na pasta do projeto, crie um arquivo .env e configure um banco de dados:
    cd notification && cp .env.example .env

  3. Se for usar o sqlite (sugerido), crie o banco:
    touch ./database/database.sqlite

  4. Instale as dependências utilizando o composer:
    composer install

  5. Utilizando o artisanm, gere a key e crie as tabelas do banco de dados:
    php artisan key:generate && php artisan migrate

  6. Execute o projeto:
    php artisan serve

  7. Concluído!!!

Autor

Luiz Felipe Magalhães Galindo <[email protected]>

About

Aplicação para estudo dos princípios SOLID (POO)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published