Scriptlog Docs

Scriptlog Documentation

Code reference for the Scriptlog codebase

User Tools

Site Tools


scriptlog:lib:core:apirouter

This is an old revision of the document!


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.

scriptlog/lib/core/apirouter.1790413761.txt.gz · Last modified: by admin