- Linguagem = PHP 7.4
- Banco de dados = Mysql:8.0
- Container = Docker & Docker Compose
- php-di/php-di = Biblioteca para injeção de dependências
- miladrahimi/phprouter = Permite a criação de rotas http
- twig/twig = Biblioteca de template HTML
- composer/composer = Gerenciador de dependências do PHP
- doctrine/migrations = Possibilita a criação scripts de geração de tabelas de banco de dados
- symfony/yaml = Permite a conversão yaml para php e também o inverso
- doctrine/orm = ORM que permite a representação das tabelas do banco de dados no formato de objeto
- illuminate/validation = Biblioteca de validação de dados
- amonolog/monolog = Permite gerar os logs da aplicação
- A requisição "passa" primeiro pelo arquivo
/public/index.php
onde:- Inicia sessão
- Inclui o autoload
- Configura o PHP-DI para injeção de dependências
- Por fim chama
TesteHibridoApp\Http\Router\RouteManager
- O
TesteHibridoApp\Http\Router\RouteManager
:- Gera as rotas da aplicação
- Após receber uma requisição com uma rota válida invoca o
TesteHibridoApp\Controller\ClientController
e seu método correspondente:$router->get('/clients', function () use ($clientController) { return $clientController->index(); });
- O
TesteHibridoApp\Controller\ClientController
tem as seguintes atribuições:- Validar a entrada de dados do usuário
- Invocar a camada de exibição de dados em
/resources/views
- Invocar as implementações de regras de negócio em
TesteHibridoApp\Service\ClientService
- O
TesteHibridoApp\Service\ClientService
:- Possui as implementações como "create", "update", "find", etc.
- Gera o log de ações como o "create" e também de erros
- Para fazer a persistência de dados, ele utiliza
Doctrine\ORM\EntityManager
que representa os dados do banco através da classeTesteHibridoApp\Model\Client
- Em
/resources/views
há os arquivos responsáveis por gerar o HTML da aplicação - O arquivo de log fica em
/logs
- O
Doctrine\ORM\EntityManager
e a biliotecadoctrine/migrations
dependem do arquivo de configuraçãomigrations-db.php
Tenha instalado o Docker e o Docker Compose na sua máquina
docker-compose up --build -d
Após o "build" do comando anterior estiver finalizado e tudo estiver executando corretamente, execute as instruções abaixo:
-
Crie o arquivo
migrations-db.php
a partir domigrations-db-example.php
e preencha as informações do banco de dados:- dbname = hibrido,
- user = root
- password = 123456
- host = teste-hibrido-mysql
- port = 3306
- driver = pdo_mysql
-
instalação de dependencias(se estiver no Linux):
docker run -it --rm -v `pwd`:/app composer install
-
instalação de dependencias(se estiver no Windows):
docker run -it --rm -v ${pwd}:/app composer install
-
Permissão pasta log:
docker-compose run --rm --no-deps php-fpm chmod -R 777 logs
-
gerar as tabelas do banco de dados:
docker-compose exec php-fpm ./vendor/bin/doctrine-migrations migrate --no-interaction
- Basta acessar a aplicação em
http://localhost:3000/