mirror of
https://github.com/skipperbent/simple-php-router.git
synced 2026-07-10 19:52:08 +00:00
1c515119b4
- Ensure that request-method is always lowercase. - Fixed spaces instead of tabs to comply with PSR-2.
49 lines
1.2 KiB
PHP
49 lines
1.2 KiB
PHP
<?php
|
|
namespace Pecee\SimpleRouter\Route;
|
|
|
|
use Pecee\Http\Request;
|
|
|
|
class RouteUrl extends LoadableRoute
|
|
{
|
|
public function __construct($url, $callback)
|
|
{
|
|
$this->setUrl($url);
|
|
$this->setCallback($callback);
|
|
}
|
|
|
|
public function matchRoute(Request $request)
|
|
{
|
|
$url = parse_url(urldecode($request->getUri()), PHP_URL_PATH);
|
|
$url = rtrim($url, '/') . '/';
|
|
|
|
// Match on custom defined regular expression
|
|
if ($this->regex !== null) {
|
|
$parameters = [];
|
|
if (preg_match($this->regex, $request->getHost() . $url, $parameters)) {
|
|
/* Remove global match */
|
|
if (count($parameters) > 1) {
|
|
array_shift($parameters);
|
|
$this->parameters = $parameters;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
// Make regular expression based on route
|
|
$route = rtrim($this->url, '/') . '/';
|
|
|
|
$parameters = $this->parseParameters($route, $url);
|
|
|
|
if ($parameters !== null) {
|
|
$this->parameters = array_merge($this->parameters, $parameters);
|
|
|
|
return true;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
} |