====== 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.//