routerREST.php
Jednoduchý router REST v PHP
php
<?php
function __autoload($class) {
include(strtr($class, "_\\", "//").'.php');
}
function restFactory($method, $request) {
// restrikce povolených metod HTTP
$methods = array('PUT', 'POST', 'GET', 'HEAD', 'DELETE', 'OPTIONS');
// restrikce povolených objektů, se kterými uživatel smí pracovat
$objects = array('user', 'game', 'message');
// Přechozí dva seznamy by se správně měly nacházet v modelu aplikace, aby router byl nezávislý.
// vygeneruji název třídy, např. "user\Get" pro zobrazení uživatele
$className = $request[1] . "\\" . ucfirst(strtolower($method));
// ošetření vstupu
if (in_array($method, $methods) && in_array($request[1], $objects)) {
return new $className(array_slice($request, 2));
}
// ostatní vstupy zamítnu
throw new Exception('Not Implemented', 501);
}
try {
// restFactory předám HTTP metodu a objekt, se kterým chce uživatel pracovat
$object = restFactory($_SERVER['REQUEST_METHOD'], explode("/", @$_SERVER['PATH_INFO']));
} catch (Exception $e) {
// klient poslal chybný požadavek nebo nastala jiná chyba
$protocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0');
header($protocol . ' ' . $e->getCode() . ' ' . $e->getMessage());
echo $e->getMessage(), "\n";
exit;
}
// výstup HTML
echo $object;
Neformátovaný
Přidáno: 18.8.2013
Expirace: Neuvedeno