| @@ -2,32 +2,51 @@ | |||||
| This chart shows how a browser request moves through the MindVisionCode framework and how a response is built and returned. | This chart shows how a browser request moves through the MindVisionCode framework and how a response is built and returned. | ||||
| ```mermaid | |||||
| flowchart TD | |||||
| A[Browser Request] --> B[public/index.php] | |||||
| B --> C[autoload.php / vendor autoload] | |||||
| B --> D[ensureSessionStarted()] | |||||
| B --> E[Create App + Router] | |||||
| B --> F[Load routes/web.php] | |||||
| B --> G[Request::capture()] | |||||
| G --> H[Dispatcher::dispatch()] | |||||
| H --> I{Route matched?} | |||||
| I -- No --> J[Response::notFound()] | |||||
| I -- Yes --> K[Route::dispatch()] | |||||
| K --> L[App::call()] | |||||
| L --> M{Handler type} | |||||
| M -- Controller method --> N[Controller action] | |||||
| M -- Closure --> O[Route closure] | |||||
| N --> P[Repository / ViewModel / Service calls] | |||||
| P --> Q[Database::query() / execute()] | |||||
| N --> R[view() / json() / redirect()] | |||||
| O --> R | |||||
| R --> S[Response object] | |||||
| J --> S | |||||
| H --> T[normalizeResponse()] | |||||
| T --> S | |||||
| S --> U[Response::send()] | |||||
| U --> V[Browser receives HTML / JSON / redirect] | |||||
| ```text | |||||
| Browser Request | |||||
| | | |||||
| v | |||||
| public/index.php | |||||
| |-- loads autoload.php / vendor autoload | |||||
| |-- starts the session | |||||
| |-- creates App + Router | |||||
| |-- loads routes/web.php | |||||
| | | |||||
| v | |||||
| Request::capture() | |||||
| | | |||||
| v | |||||
| Dispatcher::dispatch() | |||||
| | | |||||
| +--> no route matched ----> Response::notFound() | |||||
| | | |||||
| +--> route matched -------> Route::dispatch() | |||||
| | | |||||
| v | |||||
| App::call() | |||||
| | | |||||
| +--> controller method | |||||
| | | | |||||
| | v | |||||
| | Controller action | |||||
| | | | |||||
| | +--> repository / service / view model | |||||
| | +--> Database::query() / execute() | |||||
| | +--> view() / json() / redirect() | |||||
| | | |||||
| +--> closure route | |||||
| | | |||||
| v | |||||
| direct response data | |||||
| Dispatcher::normalizeResponse() | |||||
| | | |||||
| +--> Response object --------> Response::send() | |||||
| +--> array ------------------> Response::json() --> Response::send() | |||||
| +--> string -----------------> Response::send() | |||||
| Final result: | |||||
| Browser receives HTML, JSON, or a redirect | |||||
| ``` | ``` | ||||
| ## Response building paths | ## Response building paths | ||||
Powered by TurnKey Linux.