Repository navigation
Arquitetura
A arquitetura do FastWork é baseada em serviços, ou seja, todos os recursos são serviços independentes, que podem ser removidos ou alterados sem que haja impacto em outras partes do Framework.
O server utilizado no gerenciamento de requisição, é o Swoole\Http\Server, e a identificaçao da recepção de um requisição é indicada no evento 'on' => 'request' do Swoole\Http\Server.
Ao receber a chamada do evento, o servidor inicia uma instancia de AnthraxisBR\SwooleFW\Application, aqui é gerenciado os providers antes de entrar em src\Routing\Router, o router será chamado dentro da instancia de AnthraxisBR\SwooleFW\Routing\Wrapper, Wrapper, irá conter o server, a request, o route e instancia de resposta do swoole_http_server`.
Ao entrar no roteador, é feito uma leitura dos arquivos em routes/, e as rotas são iniciadas, assim é identificado qual Action será o responsável pela request, ou responder um possível erro ou intervenção via provider.
Banco de Dados
A conexão com o banco de dados, pode ser feita tanto pelo driver do Swoole, com a instancia de swoole_mysql, ou via Doctrine, onde a integração é mais profunda, e no momento é mais segurao.
Service Providers
O FastWork possui um recurso de injeçao de serviços independentes, esses serviços podem tem niveis de permissão de alteração diferentes, baseado em sua categoria de declaração que são:
Action Provider Mandatory Provider Fixed Provider Overloader Provider Assync Provider
Veja o modulo: Service Providers
Estrutura de injeção de objetos
O FastSwoole possui em sua maior parte dos recursos nativos, operando com base na injeção de objetos, o exemplo é a declaração de uma Cloud Function com o Unificador PAAS, onde o mesmo objeto, serve para criar Cloud Function tanto na AWS, GCP ou Azure, apenas alterando qual é o provider do serviço.
Os objetos em sua maior parte podem, ser independentes, os seja, serem instanciados em qualquer situação, ou dentro das injeções da Action, que irá validar e injetar recursos no objeto no momento da chamada.
Detalhes podem ser vistos em: