mirror of
https://github.com/skipperbent/simple-php-router.git
synced 2026-06-17 08:47:52 +00:00
@@ -26,7 +26,7 @@ class Response {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function refresh() {
|
public function refresh() {
|
||||||
$this->redirect(url());
|
$this->redirect(Request::getInstance()->getUri());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,10 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace Pecee\SimpleRouter;
|
namespace Pecee\SimpleRouter;
|
||||||
|
|
||||||
use Pecee\ArrayUtil;
|
|
||||||
use Pecee\Http\Middleware\BaseCsrfVerifier;
|
use Pecee\Http\Middleware\BaseCsrfVerifier;
|
||||||
use Pecee\Http\Request;
|
use Pecee\Http\Request;
|
||||||
use Pecee\Url;
|
|
||||||
|
|
||||||
class RouterBase {
|
class RouterBase {
|
||||||
|
|
||||||
@@ -42,8 +40,8 @@ class RouterBase {
|
|||||||
// Loop through each route-request
|
// Loop through each route-request
|
||||||
|
|
||||||
$activeGroup = null;
|
$activeGroup = null;
|
||||||
|
|
||||||
$routesCount = count($routes);
|
$routesCount = count($routes);
|
||||||
|
$mergedSettings = array();
|
||||||
|
|
||||||
/* @var $route RouterEntry */
|
/* @var $route RouterEntry */
|
||||||
for($i = 0; $i < $routesCount; $i++) {
|
for($i = 0; $i < $routesCount; $i++) {
|
||||||
@@ -123,7 +121,7 @@ class RouterBase {
|
|||||||
|
|
||||||
$routeMatch = $route->matchRoute($this->request);
|
$routeMatch = $route->matchRoute($this->request);
|
||||||
|
|
||||||
if($routeMatch && !($routeMatch instanceof RouterGroup)) {
|
if($routeMatch) {
|
||||||
|
|
||||||
if(count($route->getRequestMethods()) && !in_array($this->request->getMethod(), $route->getRequestMethods())) {
|
if(count($route->getRequestMethods()) && !in_array($this->request->getMethod(), $route->getRequestMethods())) {
|
||||||
$routeNotAllowed = true;
|
$routeNotAllowed = true;
|
||||||
@@ -132,9 +130,9 @@ class RouterBase {
|
|||||||
|
|
||||||
$routeNotAllowed = false;
|
$routeNotAllowed = false;
|
||||||
|
|
||||||
$this->loadedRoute = $routeMatch;
|
$this->loadedRoute = $route;
|
||||||
$routeMatch->loadMiddleware($this->request);
|
$route->loadMiddleware($this->request);
|
||||||
$routeMatch->renderRoute($this->request);
|
$route->renderRoute($this->request);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -221,6 +219,15 @@ class RouterBase {
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function getParamsToArray($query) {
|
||||||
|
$output = array();
|
||||||
|
if($query[0] === '?') {
|
||||||
|
$query = substr($query, 1);
|
||||||
|
}
|
||||||
|
parse_str($query, $output);
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
|
||||||
protected function processUrl($route, $method = null, $parameters = null, $getParams = null) {
|
protected function processUrl($route, $method = null, $parameters = null, $getParams = null) {
|
||||||
|
|
||||||
$url = '/' . trim($route->getUrl(), '/');
|
$url = '/' . trim($route->getUrl(), '/');
|
||||||
@@ -254,7 +261,7 @@ class RouterBase {
|
|||||||
$url = rtrim($url, '/') . '/';
|
$url = rtrim($url, '/') . '/';
|
||||||
|
|
||||||
if($getParams !== null && count($getParams)) {
|
if($getParams !== null && count($getParams)) {
|
||||||
$url .= '?'.Url::arrayToParams($getParams);
|
$url .= '?' . $this->getParamsToArray($getParams);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $url;
|
return $url;
|
||||||
@@ -328,13 +335,15 @@ class RouterBase {
|
|||||||
$url = array($controller);
|
$url = array($controller);
|
||||||
|
|
||||||
if(is_array($parameters)) {
|
if(is_array($parameters)) {
|
||||||
ArrayUtil::append($url, $parameters);
|
foreach($parameters as $key => $value) {
|
||||||
|
array_push($url,$value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$url = '/' . trim(join('/', $url), '/') . '/';
|
$url = '/' . trim(join('/', $url), '/') . '/';
|
||||||
|
|
||||||
if(is_array($getParams)) {
|
if(is_array($getParams)) {
|
||||||
$url .= '?' . Url::arrayToParams($getParams);
|
$url .= '?' . $this->getParamsToArray($getParams);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $url;
|
return $url;
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ class RouterController extends RouterEntry {
|
|||||||
// Set callback
|
// Set callback
|
||||||
$this->setCallback($this->controller . '@' . $this->method);
|
$this->setCallback($this->controller . '@' . $this->method);
|
||||||
|
|
||||||
return $this;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -304,7 +304,7 @@ abstract class RouterEntry {
|
|||||||
|
|
||||||
$max = count($parameterNames);
|
$max = count($parameterNames);
|
||||||
|
|
||||||
if(count($max)) {
|
if($max) {
|
||||||
for($i = 0; $i < $max; $i++) {
|
for($i = 0; $i < $max; $i++) {
|
||||||
$name = $parameterNames[$i];
|
$name = $parameterNames[$i];
|
||||||
$parameterValue = (isset($parameterValues[$name['name']]) && !empty($parameterValues[$name['name']])) ? $parameterValues[$name['name']] : null;
|
$parameterValue = (isset($parameterValues[$name['name']]) && !empty($parameterValues[$name['name']])) ? $parameterValues[$name['name']] : null;
|
||||||
@@ -332,7 +332,7 @@ abstract class RouterEntry {
|
|||||||
throw new RouterException($middleware . ' must be instance of Middleware');
|
throw new RouterException($middleware . ' must be instance of Middleware');
|
||||||
}
|
}
|
||||||
|
|
||||||
/* @var $class Middleware */
|
/* @var $class IMiddleware */
|
||||||
$middleware->handle($request);
|
$middleware->handle($request);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -341,7 +341,7 @@ abstract class RouterEntry {
|
|||||||
throw new RouterException($this->getMiddleware() . ' must be instance of Middleware');
|
throw new RouterException($this->getMiddleware() . ' must be instance of Middleware');
|
||||||
}
|
}
|
||||||
|
|
||||||
/* @var $class Middleware */
|
/* @var $class IMiddleware */
|
||||||
$middleware->handle($request);
|
$middleware->handle($request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ class RouterGroup extends RouterEntry {
|
|||||||
parent::__construct();
|
parent::__construct();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function matchDomain() {
|
protected function matchDomain(Request $request) {
|
||||||
if($this->domain !== null) {
|
if($this->domain !== null) {
|
||||||
|
|
||||||
if(is_array($this->domain)) {
|
if(is_array($this->domain)) {
|
||||||
@@ -20,7 +20,7 @@ class RouterGroup extends RouterEntry {
|
|||||||
for($i = 0; $i < $max; $i++) {
|
for($i = 0; $i < $max; $i++) {
|
||||||
$domain = $this->domain[$i];
|
$domain = $this->domain[$i];
|
||||||
|
|
||||||
$parameters = $this->parseParameters($domain, request()->getHost(), '[^.]*');
|
$parameters = $this->parseParameters($domain, $request->getHost(), '[^.]*');
|
||||||
|
|
||||||
if($parameters !== null) {
|
if($parameters !== null) {
|
||||||
$this->parameters = $parameters;
|
$this->parameters = $parameters;
|
||||||
@@ -31,7 +31,7 @@ class RouterGroup extends RouterEntry {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$parameters = $this->parseParameters($this->domain, request()->getHost(), '[^.]*');
|
$parameters = $this->parseParameters($this->domain, $request->getHost(), '[^.]*');
|
||||||
|
|
||||||
if ($parameters !== null) {
|
if ($parameters !== null) {
|
||||||
$this->parameters = $parameters;
|
$this->parameters = $parameters;
|
||||||
@@ -60,7 +60,7 @@ class RouterGroup extends RouterEntry {
|
|||||||
throw new RouterException('Method not allowed');
|
throw new RouterException('Method not allowed');
|
||||||
}
|
}
|
||||||
|
|
||||||
if($this->matchDomain() === null) {
|
if($this->matchDomain($request) === null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ class RouterResource extends RouterEntry {
|
|||||||
protected function call($method, $parameters) {
|
protected function call($method, $parameters) {
|
||||||
$this->setCallback($this->controller . '@' . $method);
|
$this->setCallback($this->controller . '@' . $method);
|
||||||
$this->parameters = $parameters;
|
$this->parameters = $parameters;
|
||||||
return $this;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function matchRoute(Request $request) {
|
public function matchRoute(Request $request) {
|
||||||
|
|||||||
@@ -26,9 +26,9 @@ class RouterRoute extends RouterEntry {
|
|||||||
// Match on custom defined regular expression
|
// Match on custom defined regular expression
|
||||||
if($this->regexMatch) {
|
if($this->regexMatch) {
|
||||||
$parameters = array();
|
$parameters = array();
|
||||||
if(preg_match('/('.$this->regexMatch.')/is', request()->getHost() . $url, $parameters)) {
|
if(preg_match('/('.$this->regexMatch.')/is', $request->getHost() . $url, $parameters)) {
|
||||||
$this->parameters = (!is_array($parameters[0]) ? array($parameters[0]) : $parameters[0]);
|
$this->parameters = (!is_array($parameters[0]) ? array($parameters[0]) : $parameters[0]);
|
||||||
return $this;
|
return true;
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -46,7 +46,7 @@ class RouterRoute extends RouterEntry {
|
|||||||
$this->parameters = $parameters;
|
$this->parameters = $parameters;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ class SimpleRouter {
|
|||||||
* @throws RouterException
|
* @throws RouterException
|
||||||
*/
|
*/
|
||||||
public static function start($defaultNamespace = null) {
|
public static function start($defaultNamespace = null) {
|
||||||
$router = RouterBase::GetInstance();
|
$router = RouterBase::getInstance();
|
||||||
$router->setDefaultNamespace($defaultNamespace);
|
$router->setDefaultNamespace($defaultNamespace);
|
||||||
$router->routeRequest();
|
$router->routeRequest();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user