This is an old revision of the document!
Table of Contents
ApiRouter
Layer: Core · Source: lib/core/ApiRouter.php:21 (lines 21–400)
class ApiRouter
API Router
Handles routing of API requests to appropriate controllers Supports GET, POST, PUT, PATCH, DELETE HTTP methods
Docblock Metadata
| Tag | Value |
|---|---|
@category | Core Class |
@author | Blogware Team |
@license | MIT |
@version | 1.0 |
@since | Since Release 1.0 |
Inheritance
No parent, interface or trait. This is a root type.
Constants (1)
| Visibility | Name | Value | Line |
|---|---|---|---|
- | CHUNK_SIZE | 10; | 46 |
Properties (4)
| Visibility | Type | Name | Default | Line |
|---|---|---|---|---|
private | (untyped) | $routes | []; | 26 |
private | (untyped) | $params | []; | 31 |
private | (untyped) | $allowedMethods | ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'QUERY']; | 36 |
private | (untyped) | $compiled | null; | 41 |
Methods (14)
| Visibility | Method | Summary | Line |
|---|---|---|---|
| public | get() | Register a GET route | 55 |
| public | post() | Register a POST route | 67 |
| public | put() | Register a PUT route | 79 |
| public | patch() | Register a PATCH route | 91 |
| public | delete() | Register a DELETE route | 103 |
| public | query() | Register a QUERY route (RFC 10008) | 118 |
| public | any() | Register a route for any HTTP method | 131 |
| private | addRoute() | Add a route to the routing table | 144 |
| private | convertToRegex() | Convert route pattern to regex | 163 |
| public | dispatch() | Dispatch the request to the appropriate controller | 188 |
| private | matchRoute() | Match the request URI to a route using combined-regex dispatch. | 281 |
| private | compileRoutes() | Compile all routes for a given HTTP method into combined regex chunks. | 333 |
| public | getParams() | Get route parameters | 386 |
| public | getRoutes() | Get all registered routes | 396 |
get()
public function get($pattern, $handler)
lines 55–58 (4)
Register a GET route
| Parameter | Type | Default | Description |
|---|---|---|---|
$pattern | (untyped) | required | Route pattern |
$handler | (untyped) | required | Controller@method |
Returns: (none declared) — self
post()
public function post($pattern, $handler)
lines 67–70 (4)
Register a POST route
| Parameter | Type | Default | Description |
|---|---|---|---|
$pattern | (untyped) | required | Route pattern |
$handler | (untyped) | required | Controller@method |
Returns: (none declared) — self
put()
public function put($pattern, $handler)
lines 79–82 (4)
Register a PUT route
| Parameter | Type | Default | Description |
|---|---|---|---|
$pattern | (untyped) | required | Route pattern |
$handler | (untyped) | required | Controller@method |
Returns: (none declared) — self
patch()
public function patch($pattern, $handler)
lines 91–94 (4)
Register a PATCH route
| Parameter | Type | Default | Description |
|---|---|---|---|
$pattern | (untyped) | required | Route pattern |
$handler | (untyped) | required | Controller@method |
Returns: (none declared) — self
delete()
public function delete($pattern, $handler)
lines 103–106 (4)
Register a DELETE route
| Parameter | Type | Default | Description |
|---|---|---|---|
$pattern | (untyped) | required | Route pattern |
$handler | (untyped) | required | Controller@method |
Returns: (none declared) — self
query()
public function query($pattern, $handler)
lines 118–121 (4)
Register a QUERY route (RFC 10008)
QUERY is a safe, idempotent method for server-side queries where the query input is passed as request content rather than URI params.
| Parameter | Type | Default | Description |
|---|---|---|---|
$pattern | (untyped) | required | Route pattern |
$handler | (untyped) | required | Controller@method |
Returns: (none declared) — self
any()
public function any($method, $pattern, $handler)
lines 131–134 (4)
Register a route for any HTTP method
| Parameter | Type | Default | Description |
|---|---|---|---|
$method | (untyped) | required | HTTP method |
$pattern | (untyped) | required | Route pattern |
$handler | (untyped) | required | Controller@method |
Returns: (none declared) — self
addRoute()
private function addRoute($method, $pattern, $handler)
lines 144–155 (12)
Add a route to the routing table
| Parameter | Type | Default | Description |
|---|---|---|---|
$method | (untyped) | required | HTTP method |
$pattern | (untyped) | required | Route pattern |
$handler | (untyped) | required | Controller@method |
Returns: (none declared) — self
convertToRegex()
private function convertToRegex($pattern)
lines 163–178 (16)
Convert route pattern to regex
| Parameter | Type | Default | Description |
|---|---|---|---|
$pattern | (untyped) | required | Route pattern |
Returns: (none declared) — string Regex pattern
dispatch()
public function dispatch($method, $uri, $queryParams = [])
lines 188–266 (79)
Dispatch the request to the appropriate controller
| Parameter | Type | Default | Description |
|---|---|---|---|
$method | (untyped) | required | HTTP method |
$uri | (untyped) | required | Request URI |
$queryParams | (untyped) | [] | Query parameters |
Returns: (none declared) — void
matchRoute()
private function matchRoute($method, $uri)
lines 281–321 (41)
Match the request URI to a route using combined-regex dispatch.
Phase 1: Single preg_match per chunk quickly eliminates non-matching URIs. Phase 2: Iterate the chunk's dispatch table to identify the specific route using each entry's original regex. This keeps the fast-fail path (non-matching URI) at O(1) preg_match per chunk, while the identification path uses targeted per-route checks.
| Parameter | Type | Default | Description |
|---|---|---|---|
$method | (untyped) | required | HTTP method |
$uri | (untyped) | required | Request URI |
Returns: (none declared) — array|false Matched route or false
compileRoutes()
private function compileRoutes($method)
lines 333–379 (47)
Compile all routes for a given HTTP method into combined regex chunks.
Each chunk contains up to CHUNK_SIZE routes combined into a single (?|…) branch-reset regex. A dispatch table maps each branch to its handler, parameter positions, verification prefix, and suffix.
| Parameter | Type | Default | Description |
|---|---|---|---|
$method | (untyped) | required | none |
Returns: (none declared) — array|null
getParams()
public function getParams()
lines 386–389 (4)
Get route parameters
Takes no parameters.
Returns: (none declared) — array
getRoutes()
public function getRoutes()
lines 396–399 (4)
Get all registered routes
Takes no parameters.
Returns: (none declared) — array
This page is generated from source by 'tools/gendoc'. Edits will be overwritten.
