A DigitalMaps é uma empresa especializada na produção de receptores GPS.
Esse aplicativo é um dos microserviços da DigitalMaps, sua responsabilidades são:
- Armazenar pontos de referência segundo sua latitude, longitude e horário de funcionamento.
- Disponibilizar os pontos de referência(previamente cadastrados) em funcionamento próximos ao usuário.
O microserviço foi desenvolvido na linguagem de programação PHP com framework Laravel 9.x. Para armazenamento dos dados está sendo utilizado MySql com Eloquent(Laravel) implementado Repository Partner.
Hoje o microseviço funciona sobre três pilares, usuário, pontos de interesse e proximidades que reúne o local do usuário e interesse ao seu redor.
Por ser um projeto pequeno não houve a necessidade da criação de um helper.php
file. Porém criei a trait \App\Helpers\AuthUser
utilizado apenas no observer \App\Observers\PointInterestObserver
Os observers são utilizados para ouvirem eventos de um determinado modelo
\App\Observers\PointInterestObserver
: Responsável por definir o usuário logado como criador do ponto de interesse recém registrado.
\App\Observers\UserObserver
: Responsável por criptografar a senha do usuário recém-criado.
Todos os observers são carregados automaticamente através do provider \App\Providers\ObserverServiceProvider
.
Repositório é um serviço que utilizo para armazenar lógica do meu modelo de dados.
Para cada modelo eu tenho um Serviço de repositório que ficam armazenados na pasta app/Repositorios
.
Todos os repositórios são carregados automaticamente através do provider \App\Providers\RepositoryServiceProvider
possibilitando a dependency injection.
Nosso primeiro passo será clonar o projeto para sua maquina.
git clone https://github.com/SOSTheBlack/digital-maps
cd digital-maps
Faça uma cópia do arquivo .env.example e o nomei de .env com o comando abaixo:
cp .env.example .env
Este comando usa um pequeno container Docker contendo PHP e Composer para instalar as dependências do aplicativo:
docker run --rm \
-u "$(id -u):$(id -g)" \
-v $(pwd):/var/www/html \
-w /var/www/html \
laravelsail/php81-composer:latest \
composer install --ignore-platform-reqs
No projeto é utilizado Laravel Sail, uma interface de linha de comando leve para interagir com o ambiente de desenvolvimento Docker.
Antes de iniciar o microserviço, você deve garantir que nenhum outro servidor web ou banco de dados esteja rodando em seu computador local.
Para iniciar todos os containers Docker definidos, você deve executar o comando up
:
./vendor/bin/sail up
Uma vez iniciados os containers da aplicação, você pode acessar o projeto em seu navegador web em: http://localhost
Para se conectar ao banco de dados MySQL a partir de sua máquina local, você pode usar um aplicativo gráfico de gerenciamento de banco de dados, como o TablePlus.
Por padrão, o banco de dados MySQL está acessível na localhostporta 3306.
HOST=localhost
USERNAME=root
PASSWORD=password
DATABASE=digital-maps
Por padrão, os comandos Sail são invocados usando o vendor/bin/sail.
No entanto, em vez de digitar repetidamente vendor/bin/sail para executar os comandos do Sail, você pode configurar um alias do Bash que permita executar os comandos do Sail com mais facilidade:
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
Uma vez que o alias Bash tenha sido configurado, você pode executar comandos Sail simplesmente digitando sail.
sail up -d
Todos os próximos exemplos de comando será levado em consideração esse alias.
Para parar todos os containers do microserviço, você pode simplesmente pressionar Control + C para parar a execução do container. Ou, se os containers estiverem rodando em segundo plano, você pode usar o stop
comando:
sail stop
O Aplicativo DigitalMaps foi construído com tests em mente.
Para executar os tests que ficam no diretório /tests
basta executar o comando abaixo:
sail test
O PHP-CS-Fixer é um fixador de padrões de codificação PHP, ele corrige todo o estilo do seu código, quebras, espaços, estilo de declarações, dentre outros.
A configuração do estilo do código seguido é PSR-12, detalhes e configurações do estilo do código pode ser obtido através do arquivo .php-cs-fixer.php
na raiz desse projeto.
Para verificar se estilo do código está seguindo os padrões de desenvolvimento definido execute o comando abaixo:
sail composer check-style
O PHPStan se concentra em encontrar erros em seu código sem realmente executá-lo. Ele captura classes inteiras de bugs antes mesmo de você escrever testes para o código. Ele aproxima o PHP das linguagens compiladas no sentido de que a correção de cada linha do código pode ser verificada antes de você executar a linha atual.
Resumidamente ele é um analisador estático que varre o código da sua aplicação procurando por erros e incongruências sem que haja a necessidade de executá-lo, a análise é toda estática. É uma ferramenta essencial para te apontar bugs ou erros que certamente aparecerão em algum momento do uso da aplicação.
O PHPStan está analisando o código no nível mais estrito(9) possível. Para executar esse analisador de código, basta executar o comando abaixo:
sail composer phpstan
O PHPInsights analisa a qualidade do código. Ele divide a análise em quatro categorias: código, complexidade (complexidade ciclomática etc), arquitetura (tamanho de métodos e classes, entre outras análises) e estilo de código (formatação, padronização).
Para executar esse analisador de código, basta executar o comando abaixo:
sail composer phpinsights
A documentação do aplicativo pode ser importado para o seu Postman através do botão abaixo: