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.1790414216.txt.gz · Last modified: by admin