Compare commits

..

16 Commits

Author SHA1 Message Date
Simon Sessingø 0df469184c Merge pull request #22 from skipperbent/development
[BUGFIX] Fixed Exceptions due to route null value.
2015-10-30 02:28:40 +01:00
Simon Sessingø 649ed28a91 [BUGFIX] Fixed Exceptions due to route null value. 2015-10-30 02:27:44 +01:00
Simon Sessingø 5cb7086e96 Merge pull request #21 from skipperbent/development
Development
2015-10-28 05:04:45 +01:00
Simon Sessingø a2edc1504c [BUGFIX] Fixed regular expression matching after last release. 2015-10-28 05:04:11 +01:00
Simon Sessingø d31cda8e70 Merge pull request #20 from skipperbent/master
Latest master
2015-10-27 17:49:08 +01:00
Simon Sessingø 921f050a31 Update README.md 2015-10-27 17:48:35 +01:00
Simon Sessingø dcbf59b305 Merge pull request #19 from skipperbent/development
Development
2015-10-27 17:46:10 +01:00
Simon Sessingø bc16388613 [OPTIMISATION] Optimised middleware loading and routes. 2015-10-27 17:35:56 +01:00
Simon Sessingø d3ed3a61b5 [BUGFIX] Middlewares are no longer loaded on invalid routes 2015-10-27 16:42:39 +01:00
Simon Sessingø 969b64650e Merge pull request #18 from skipperbent/development
[OPTIMISATION] Optimised router handling - router will now use the or…
2015-10-27 14:02:57 +01:00
Simon Sessingø c2cf2334e7 [OPTIMISATION] Optimised router handling - router will now use the order provided when loading routes. 2015-10-27 14:01:19 +01:00
Simon Sessingø af730e6e15 Merge pull request #17 from skipperbent/development
Development
2015-10-27 11:06:36 +01:00
Simon Sessingø f5a32cf520 [BUGFIX] Fixed router paths. 2015-10-27 10:35:57 +01:00
Simon Sessingø 1843ea0594 [BUGFIX] Fixed routes always matching /show/{id} when other routes are added. 2015-10-27 10:29:40 +01:00
Simon Sessingø fd28f4549f Merge pull request #16 from skipperbent/development
[BUGFIX] Bugfixes
2015-10-25 15:31:15 +01:00
Simon Sessingø 5e5a424ee8 [BUGFIX] Bugfixes
- getUri() method in Request class no longer appends "/".
- Optimised parseParameters method in RouterRoute class for regex matches.
2015-10-25 15:29:14 +01:00
7 changed files with 21 additions and 21 deletions
+2 -2
View File
@@ -1,5 +1,5 @@
# Simple PHP router
Simple, fast PHP router that is easy to get integrated and in almost any project. Heavily inspired by the Laravel router.
Simple, fast and yet powerful PHP router that is easy to get integrated and in any project. Heavily inspired by the Laravel router.
## Installation
Add the latest version pf Simple PHP Router to your ```composer.json```
@@ -33,7 +33,7 @@ Add the latest version pf Simple PHP Router to your ```composer.json```
- Global Constraints
- Sub-Domain Routing
- Required parameters
- Optional parameters
## Initialising the router
+1 -1
View File
@@ -10,7 +10,7 @@ class Request {
public function __construct() {
$this->host = $_SERVER['HTTP_HOST'];
$this->uri = rtrim($_SERVER['REQUEST_URI'], '/') . '/';
$this->uri = $_SERVER['REQUEST_URI'];
$this->method = (isset($_POST['_method'])) ? strtolower($_POST['_method']) : strtolower($_SERVER['REQUEST_METHOD']);
$this->headers = getallheaders();
}
+3 -7
View File
@@ -100,11 +100,6 @@ class RouterBase {
// Loop through each route-request
$this->processRoutes($this->routes);
// Make sure the urls is in the right order when comparing
usort($this->controllerUrlMap, function($a, $b) {
return strcmp($b->getUrl(), $a->getUrl());
});
$routeNotAllowed = false;
/* @var $route RouterEntry */
@@ -121,6 +116,7 @@ class RouterBase {
$routeNotAllowed = false;
$this->loadedRoute = $routeMatch;
$routeMatch->loadMiddleware($this->request);
$routeMatch->renderRoute($this->request);
break;
}
@@ -257,7 +253,7 @@ class RouterBase {
throw new \InvalidArgumentException('Invalid type for getParams. Must be array or null');
}
if($controller === null && $parameters === null) {
if($controller === null && $parameters === null && $this->loadedRoute !== null) {
return $this->processUrl($this->loadedRoute, null, $getParams);
}
@@ -299,7 +295,7 @@ class RouterBase {
$method = $tmp[1];
}
if($controller === $c) {
if($controller === $c && $route !== null) {
return $this->processUrl($route, $method, $parameters, $getParams);
}
}
+3 -5
View File
@@ -179,9 +179,9 @@ abstract class RouterEntry {
public function getMergeableSettings() {
$settings = $this->settings;
if(isset($settings['middleware'])) {
/*if(isset($settings['middleware'])) {
unset($settings['middleware']);
}
}*/
if(isset($settings['prefix'])) {
unset($settings['prefix']);
@@ -243,7 +243,7 @@ abstract class RouterEntry {
return new $name();
}
protected function loadMiddleware(Request $request) {
public function loadMiddleware(Request $request) {
if($this->getMiddleware()) {
$middleware = $this->loadClass($this->getMiddleware());
if (!($middleware instanceof Middleware)) {
@@ -256,8 +256,6 @@ abstract class RouterEntry {
}
public function renderRoute(Request $request) {
// Load middleware
$this->loadMiddleware($request);
if(is_object($this->getCallback()) && is_callable($this->getCallback())) {
+8 -2
View File
@@ -10,7 +10,7 @@ class RouterGroup extends RouterEntry {
parent::__construct();
}
public function matchRoute(Request $request) {
public function renderRoute(Request $request) {
// Check if request method is allowed
if(strtolower($request->getUri()) == strtolower($this->prefix) || stripos($request->getUri(), $this->prefix) === 0) {
@@ -29,11 +29,17 @@ class RouterGroup extends RouterEntry {
throw new RouterException('Method not allowed');
}
return $this;
$this->loadMiddleware($request);
return parent::renderRoute($request);
}
// No match here, move on...
return null;
}
public function matchRoute(Request $request) {
return null;
}
}
@@ -20,9 +20,6 @@ class RouterResource extends RouterEntry {
}
public function renderRoute(Request $request) {
// Load middleware
$this->loadMiddleware($request);
if(is_object($this->getCallback()) && is_callable($this->getCallback())) {
// When the callback is a function
call_user_func_array($this->getCallback(), $this->getParameters());
+4 -1
View File
@@ -19,6 +19,7 @@ class RouterRoute extends RouterEntry {
}
protected function parseParameters($url, $multiple = false, $regex = self::PARAMETERS_REGEX_MATCH) {
$url = rtrim($url, '/');
$parameters = array();
if($multiple) {
@@ -60,8 +61,10 @@ class RouterRoute extends RouterEntry {
} else {
$matches = (count(explode('/', rtrim($url, '/'))) == count(explode('/', rtrim($route, '/'))));
$url = explode('/', $url);
$route = explode('/', $route);
$route = explode('/', rtrim($route, '/'));
$parameters = array();