PhpSPA v1.1.8 — Router & Response¶
This document describes how to use the new Router and Response APIs introduced in v1.1.8. It contains full usage examples, API reference, and migration tips.
Router — Quick examples¶
Automatic dispatch (recommended for web apps)¶
Register routes normally; the router dispatches automatically when the PHP script ends.
<?php
use PhpSPA\Http\Router;
use PhpSPA\Http\Response;
use PhpSPA\Http\Request;
// Simple route
Router::get('/', function(Request $req) {
return Response::json(['message' => 'Hello world']);
});
// Parameterized route (MapRoute typed parameter support)
Router::get('/user/{id: int}', function(Request $req, int $id) {
// $id is validated and typed by MapRoute
return Response::json(['user_id' => $id]);
});
Response — API & examples¶
PhpSPA\Http\Response is designed for concise, fluent response construction.
Create responses¶
<?php
use PhpSPA\Http\Response;
// Basic JSON response (static)
return Response::json(['status' => 'OK']);
// Fluent construction
return (new Response())
->data(['result' => 'value'])
->status(200)
->header('X-Custom', 'value')
->contentType('application/json');
// Convenience shortcut
Response::sendJson(['ok' => true]); // builds and sends immediately
Common helper methods¶
Response::json($data, $status = 200, $headers = [])— create a JSON response.Response::make($data, $status = 200, $headers = [])— create a Response instance.Response::sendJson(...),Response::sendSuccess(...),Response::sendError(...)— build & send shortcuts.- Instance helpers:
data(),status(),header(),contentType(),success(),error().
Using the global response() helper¶
The repo provides a global helper function response() that returns a Response instance. Use it for fluent convenience in route callbacks.
<?php
// Example using response() function
return response(['message' => 'ok'], 200)
->header('X-Hello', 'world')
->contentType('application/json');
// Example using response() function for registering route
response()->get('/example', function(Request $request) {
return response()->json(['example' => true]);
});
Complete example¶
<?php
require_once 'path/to/vendor/autoload.php';
use PhpSPA\Http\Response;
use PhpSPA\Http\Request;
use function PhpSPA\Http\response;
$request = new Request();
$response = Response::fromRequest($request)->caseSensitive();
// Define your routes
$response->get('/user/{id: int}', function (Request $request, int $id) {
$user = 2; // example lookup
return response(['message' => 'Hello from route with ID: ' . $id, 'data' => $user], 200)
->header('X-Route-Header', 'route_value');
});
$response->get('/status', function (Request $request) {
return response()->json([
'status' => 'OK',
'message' => 'Server is running.'
]);
});
$response->get('/data', function (Request $request) {
return response()
->json(['data' => 'some data'])
->header('X-Custom-Header', 'Value')
->contentType('application/json');
});
// Convenience methods
$response->get('/success', function (Request $request) {
return response()->success(['result' => 'data'], 'Operation successful');
});
$response->get('/error', function (Request $request) {
return response()->error('Something went wrong', 500);
});
MapRoute pattern reference¶
MapRoute supports parameter patterns and strict types in route declarations. Examples:
/user/{id}— simple parameter/user/{id: int}— typed parameter (int)/search/{q: string}— string param
For full details see https://phpspa.tech/routing/advanced-routing.