Compare commits

..

7 Commits

Author SHA1 Message Date
Simon Sessingø 2d57b45c7b Fixed urls not being visible 2016-11-06 09:04:05 +01:00
Simon Sessingø 98cc8504d4 Development
- Group only loads if prefix matches (if any).
2016-11-06 08:13:47 +01:00
Simon Sessingø 035a5b1629 Development
- Added support for cloudflare when using getIp method in Request.
- Fixed undefined variable notice in RouterBase class.
2016-11-05 23:07:14 +01:00
Simon Sessingø 832aff0358 Optimised for cli-usage 2016-10-28 07:40:51 +02:00
Simon Sessingø 43e05ad821 Minor optimisations 2016-10-27 19:15:38 +02:00
Simon Sessingø 2fd32868c2 Optimisations and bugfixes 2016-10-27 17:06:05 +02:00
Simon Sessingø e51b72f0e0 Development
- Changed from http_build_query to custom solution as it doesn't support querystrings with "%" on some php versions.
2016-10-27 16:44:35 +02:00
5 changed files with 36 additions and 44 deletions
+4 -1
View File
@@ -96,7 +96,10 @@ class Request {
* @return string
*/
public function getIp() {
return ((isset($_SERVER['HTTP_X_FORWARDED_FOR']) && strlen($_SERVER['HTTP_X_FORWARDED_FOR'])) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']);
if(isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
return $_SERVER['HTTP_CF_CONNECTING_IP'];
}
return ((isset($_SERVER['HTTP_X_FORWARDED_FOR']) && strlen($_SERVER['HTTP_X_FORWARDED_FOR'])) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : null);
}
/**
+24 -20
View File
@@ -86,15 +86,22 @@ class RouterBase {
$this->currentRoute = $route;
if($route instanceof RouterGroup && is_callable($route->getCallback())) {
$group = $route;
$group->renderRoute($this->request);
$mergedSettings = array_merge($settings, $group->getMergeableSettings());
$route->renderRoute($this->request);
if($route->matchRoute($this->request)) {
$group = $route;
$mergedSettings = array_merge($settings, $group->getMergeableSettings());
// Add ExceptionHandler
if ($group->getExceptionHandler() !== null) {
$this->exceptionHandlers[] = $route;
}
// Add ExceptionHandler
if($group->matchRoute($this->request) && $group->getExceptionHandler() !== null) {
$this->exceptionHandlers[] = $route;
}
}
$this->currentRoute = null;
@@ -113,6 +120,8 @@ class RouterBase {
$originalUri = $this->request->getUri();
$routeNotAllowed = false;
try {
// Initialize boot-managers
@@ -137,8 +146,6 @@ class RouterBase {
}
}
$routeNotAllowed = false;
$max = count($this->controllerUrlMap);
/* @var $route RouterEntry */
@@ -303,15 +310,16 @@ class RouterBase {
public function arrayToParams(array $getParams = null, $includeEmpty = true) {
if(is_array($getParams)) {
if(is_array($getParams) && count($getParams)) {
if ($includeEmpty === false) {
$getParams = array_filter($getParams, function ($item) {
return (!empty($item));
});
}
return http_build_query($getParams);
return '?' . http_build_query($getParams);
}
return '';
}
@@ -366,8 +374,8 @@ class RouterBase {
$url = rtrim($url, '/') . '/';
if($getParams !== null && count($getParams)) {
$url .= '?' . $this->arrayToParams($getParams);
if($getParams !== null) {
$url .= $this->arrayToParams($getParams);
}
return $url;
@@ -389,8 +397,8 @@ class RouterBase {
$url = parse_url($this->request->getUri(), PHP_URL_PATH);
if(count($getParams)) {
$url .= '?' . $this->arrayToParams($getParams);
if($getParams !== null) {
$url .= $this->arrayToParams($getParams);
}
return $url;
@@ -461,8 +469,8 @@ class RouterBase {
$url = '/' . trim(join('/', $url), '/') . '/';
if($getParams !== null && count($getParams)) {
$url .= '?' . $this->arrayToParams($getParams);
if($getParams !== null) {
$url .= $this->arrayToParams($getParams);
}
return $url;
@@ -475,8 +483,4 @@ class RouterBase {
return static::$instance;
}
public static function reset() {
static::$instance = null;
}
}
+2 -3
View File
@@ -12,7 +12,6 @@ class GroupTest extends PHPUnit_Framework_TestCase {
}
public function testGroup() {
\Pecee\SimpleRouter\RouterBase::reset();
$this->result = false;
@@ -28,9 +27,9 @@ class GroupTest extends PHPUnit_Framework_TestCase {
}
public function testNestedGroup() {
\Pecee\SimpleRouter\RouterBase::reset();
\Pecee\Http\Request::getInstance()->setUri('/api/v1/test');
\Pecee\SimpleRouter\RouterBase::getInstance()->getRequest()->setUri('/api/v1/test');
\Pecee\SimpleRouter\RouterBase::getInstance()->getRequest()->setMethod('get');
\Pecee\SimpleRouter\SimpleRouter::group(['prefix' => '/api'], function() {
\Pecee\SimpleRouter\SimpleRouter::group(['prefix' => '/v1'], function() {
-1
View File
@@ -7,7 +7,6 @@ require_once 'Dummy/Handler/ExceptionHandler.php';
class MiddlewareTest extends PHPUnit_Framework_TestCase {
public function testMiddlewareFound() {
\Pecee\SimpleRouter\RouterBase::reset();
\Pecee\Http\Request::getInstance()->setMethod('get');
\Pecee\Http\Request::getInstance()->setUri('/my/test/url');
+6 -19
View File
@@ -8,7 +8,6 @@ class RouterRouteTest extends PHPUnit_Framework_TestCase {
public function testNotFound() {
\Pecee\SimpleRouter\RouterBase::reset();
\Pecee\Http\Request::getInstance()->setMethod('get');
\Pecee\Http\Request::getInstance()->setUri('/test-param1-param2');
@@ -31,46 +30,40 @@ class RouterRouteTest extends PHPUnit_Framework_TestCase {
public function testGet() {
\Pecee\SimpleRouter\RouterBase::reset();
\Pecee\Http\Request::getInstance()->setMethod('get');
\Pecee\SimpleRouter\RouterBase::getInstance()->getRequest()->setUri('/my/test/url');
\Pecee\SimpleRouter\RouterBase::getInstance()->getRequest()->setMethod('get');
\Pecee\SimpleRouter\SimpleRouter::get('/my/test/url', 'DummyController@start');
\Pecee\SimpleRouter\SimpleRouter::start();
}
public function testPost() {
\Pecee\SimpleRouter\RouterBase::getInstance()->getRequest()->setUri('/my/test/url');
\Pecee\Http\Request::getInstance()->setMethod('post');
\Pecee\SimpleRouter\RouterBase::reset();
\Pecee\SimpleRouter\SimpleRouter::post('/my/test/url', 'DummyController@start');
\Pecee\SimpleRouter\SimpleRouter::start();
}
public function testPut() {
\Pecee\SimpleRouter\RouterBase::getInstance()->getRequest()->setUri('/my/test/url');
\Pecee\Http\Request::getInstance()->setMethod('put');
\Pecee\SimpleRouter\RouterBase::reset();
\Pecee\SimpleRouter\SimpleRouter::put('/my/test/url', 'DummyController@start');
\Pecee\SimpleRouter\SimpleRouter::start();
}
public function testDelete() {
\Pecee\SimpleRouter\RouterBase::getInstance()->getRequest()->setUri('/my/test/url');
\Pecee\Http\Request::getInstance()->setMethod('delete');
\Pecee\SimpleRouter\RouterBase::reset();
\Pecee\SimpleRouter\SimpleRouter::delete('/my/test/url', 'DummyController@start');
\Pecee\SimpleRouter\SimpleRouter::start();
}
public function testMethodNotAllowed() {
\Pecee\SimpleRouter\RouterBase::reset();
\Pecee\SimpleRouter\RouterBase::getInstance()->getRequest()->setUri('/my/test/url');
\Pecee\Http\Request::getInstance()->setMethod('post');
\Pecee\SimpleRouter\SimpleRouter::get('/my/test/url', 'DummyController@start');
@@ -85,8 +78,6 @@ class RouterRouteTest extends PHPUnit_Framework_TestCase {
public function testSimpleParam() {
\Pecee\SimpleRouter\RouterBase::reset();
\Pecee\Http\Request::getInstance()->setMethod('get');
\Pecee\Http\Request::getInstance()->setUri('/test-param1');
@@ -97,8 +88,6 @@ class RouterRouteTest extends PHPUnit_Framework_TestCase {
public function testMultiParam() {
\Pecee\SimpleRouter\RouterBase::reset();
\Pecee\Http\Request::getInstance()->setMethod('get');
\Pecee\Http\Request::getInstance()->setUri('/test-param1-param2');
@@ -109,8 +98,6 @@ class RouterRouteTest extends PHPUnit_Framework_TestCase {
public function testPathParam() {
\Pecee\SimpleRouter\RouterBase::reset();
\Pecee\Http\Request::getInstance()->setMethod('get');
\Pecee\Http\Request::getInstance()->setUri('/test/path/param1');