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