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.
