PHP code example of volcanus / routing
1. Go to this page and download the library: Download volcanus/routing library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
volcanus / routing example snippets
use Volcanus\Routing\Router;
use Volcanus\Routing\Exception\NotFoundException;
use Volcanus\Routing\Exception\InvalidParameterException;
$router = Router::instance([
'parameterDirectoryName' => '%VAR%', // パラメータディレクトリ名を %VAR% と設定する
'searchExtensions' => 'php', // 読み込み対象スクリプトの拡張子を php と設定する
'overwriteGlobals' => true, // ルーティング実行時、$_SERVERグローバル変数を上書きする
]);
$router->importGlobals(); // $_SERVERグローバル変数から環境変数を取り込む
try {
$router->prepare()->execute();
} catch (\Exception $e) {
$text = '500 Internal Server Error';
if ($e instanceof NotFoundException) {
$text = '404 Not Found';
}
if (!headers_sent() && isset($_SERVER['SERVER_PROTOCOL'])) {
header(sprintf('%s %s', $_SERVER['SERVER_PROTOCOL'], $text));
}
echo sprintf('<html><head><title>Error %s</title></head><body><h1>%s</h1></body></html>'
, htmlspecialchars($text, ENT_QUOTES, 'UTF-8')
, htmlspecialchars($text, ENT_QUOTES, 'UTF-8')
);
}
use Volcanus\Routing\Router;
$router = Router::instance();
$categoryId = $router->parameter(0); // '1'
$itemId = $router->parameter(1); // '2'
$extension = $router->extension(); // 'json'
use Volcanus\Routing\Router;
use Volcanus\Routing\Exception\NotFoundException;
use Volcanus\Routing\Exception\InvalidParameterException;
$router = Router::instance([
'parameterLeftDelimiter' => '{%', // パラメータの左デリミタは {% とする
'parameterRightDelimiter' => '%}', // パラメータの右デリミタは %} とする
'searchExtensions' => 'php', // 読み込み対象スクリプトの拡張子を php と設定する
'overwriteGlobals' => true, // ルーティング実行時、$_SERVERグローバル変数を上書きする
]);
$router->importGlobals(); // $_SERVERグローバル変数から環境変数を取り込む
try {
$router->prepare()->execute();
} catch (\Exception $e) {
$text = '500 Internal Server Error';
if ($e instanceof NotFoundException) {
$text = '404 Not Found';
} elseif ($e instanceof InvalidParameterException) {
$text = '400 Bad Request';
}
if (!headers_sent() && isset($_SERVER['SERVER_PROTOCOL'])) {
header(sprintf('%s %s', $_SERVER['SERVER_PROTOCOL'], $text));
}
echo sprintf('<html><head><title>Error %s</title></head><body><h1>%s</h1></body></html>'
, htmlspecialchars($text, ENT_QUOTES, 'UTF-8')
, htmlspecialchars($text, ENT_QUOTES, 'UTF-8')
);
use Volcanus\Routing\Router;
$router = Router::instance();
$$user_id = $router->parameter(0); // (string) '1'
use Volcanus\Routing\Router;
use Volcanus\Routing\Exception\NotFoundException;
use Volcanus\Routing\Exception\InvalidParameterException;
$router = Router::instance([
'parameterLeftDelimiter' => '{%', // パラメータの左デリミタは {% とする
'parameterRightDelimiter' => '%}', // パラメータの右デリミタは %} とする
'parameterFilters' => [
// 独自のフィルタ "profile_id" を設定する
'profile_id' => function($value) {
if (strspn($value, '0123456789abcdefghijklmnopqrstuvwxyz_-.') !== strlen($value)) {
throw new InvalidParameterException('oh...');
}
return $value;
},
// 標準のフィルタ "digit" を上書き設定する
'digit' => function($value) {
if (!ctype_digit($value)) {
throw new InvalidParameterException('oh...');
}
return intval($value);
},
],
'searchExtensions' => 'php', // 読み込み対象スクリプトの拡張子を php と設定する
'overwriteGlobals' => true, // ルーティング実行時、$_SERVERグローバル変数を上書きする
]);
$router->importGlobals(); // $_SERVERグローバル変数から環境変数を取り込む
try {
$router->prepare()->execute();
} catch (\Exception $e) {
$text = '500 Internal Server Error';
if ($e instanceof NotFoundException) {
$text = '404 Not Found';
} elseif ($e instanceof InvalidParameterException) {
$text = '400 Bad Request';
}
if (!headers_sent() && isset($_SERVER['SERVER_PROTOCOL'])) {
header(sprintf('%s %s', $_SERVER['SERVER_PROTOCOL'], $text));
}
echo sprintf('<html><head><title>Error %s</title></head><body><h1>%s</h1></body></html>'
, htmlspecialchars($text, ENT_QUOTES, 'UTF-8')
, htmlspecialchars($text, ENT_QUOTES, 'UTF-8')
);
}
use Volcanus\Routing\Router;
$router = Router::instance();
$user_id = $router->parameter(0); // (int) 1
$profile_id = $router->parameter(1); // (string) 'k-holy'
use Volcanus\Routing\Router;
use Volcanus\Routing\Exception\NotFoundException;
use Volcanus\Routing\Exception\InvalidParameterException;
$router = Router::instance([
'fallbackScript' => '/path/to/fallback.php', // スクリプトが見つからない場合は ドキュメントルート/path/to/fallback.php を読み込む
]);
$router->importGlobals(); // $_SERVERグローバル変数から環境変数を取り込む
try {
$router->prepare()->execute();
} catch (\Exception $e) {
$text = '500 Internal Server Error';
if ($e instanceof NotFoundException) {
$text = '404 Not Found';
}
if (!headers_sent() && isset($_SERVER['SERVER_PROTOCOL'])) {
header(sprintf('%s %s', $_SERVER['SERVER_PROTOCOL'], $text));
}
echo sprintf('<html><head><title>Error %s</title></head><body><h1>%s</h1></body></html>'
, htmlspecialchars($text, ENT_QUOTES, 'UTF-8')
, htmlspecialchars($text, ENT_QUOTES, 'UTF-8')
);
}
use Volcanus\Routing\Router;
use Volcanus\Routing\Exception\NotFoundException;
use Volcanus\Routing\Exception\InvalidParameterException;
$router = Router::instance([
'fallbackScript' => 'fallback.php', // スクリプトが見つからない場合は fallback.php があれば読み込む
]);
$router->importGlobals(); // $_SERVERグローバル変数から環境変数を取り込む
try {
$router->prepare()->execute();
} catch (\Exception $e) {
$text = '500 Internal Server Error';
if ($e instanceof NotFoundException) {
$text = '404 Not Found';
}
if (!headers_sent() && isset($_SERVER['SERVER_PROTOCOL'])) {
header(sprintf('%s %s', $_SERVER['SERVER_PROTOCOL'], $text));
}
echo sprintf('<html><head><title>Error %s</title></head><body><h1>%s</h1></body></html>'
, htmlspecialchars($text, ENT_QUOTES, 'UTF-8')
, htmlspecialchars($text, ENT_QUOTES, 'UTF-8')
);
}
FallbackResource /__gateway.php