# Fluxo de Requisição - v1.0

## Visão Geral

O sistema usa um **front controller** em `index.php` que lê parâmetros da requisição e despacha para o controller apropriado.

## Parâmetros

| Parâmetro | Constante | Descrição |
|-----------|-----------|-----------|
| `m` | MODULE | Módulo (ex: bolao, loteria, cliente) |
| `c` | CONTROLLER | Controller (ex: bolao, megasena) |
| `a` | ACTION | Action (ex: index, resultados) |
| `v` | VIEW | View (opcional) |

Definidos em `index.php`:

```php
define("MODULE", lcfirst(Request::get('m')));
define("CONTROLLER", lcfirst(Request::get('c')));
define("ACTION", lcfirst(Request::get('a')));
define("VIEW", lcfirst(Request::get('v')));
```

## Fluxo

1. Requisição chega ao servidor
2. `.htaccess` reescreve URL para `index.php` com query string (ex: `?m=loteria&c=megasena&a=resultados`)
3. `index.php` carrega configurações, define constantes
4. `ApplicationUtil::controller(MODULE, CONTROLLER)` normaliza o nome e carrega o arquivo do controller
5. Instancia `MegaSorteOnline\{Module}\Controller\{Controller}Controller`
6. Chama `$_controller->execute()` que invoca a action (ex: `resultadosAction`)

## ApplicationUtil

Arquivo: `krypitonite/src/Util/ApplicationUtil.php`

Normaliza nomes de controller:
- `megasena` → `MegaSena`
- `diadesorte` → `DiadeSorte`
- `supersete` → `SuperSete`
- `maismilionaria` → `MaisMilionaria`
- `duplasena` → `DuplaSena`
- etc.

Carrega: `src/{Module}/Controller/{Controller}Controller.php`

## Default

Se MODULE e CONTROLLER vazios: redirect para `/?m=bolao&c=bolao&a=index`
