diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Exceptions/Handler.php | 2 | ||||
-rw-r--r-- | src/Routing/LegacyUrlGenerator.php | 30 | ||||
-rw-r--r-- | src/Routing/RoutingServiceProvider.php | 14 | ||||
-rw-r--r-- | src/Routing/UrlGenerator.php | 11 | ||||
-rw-r--r-- | src/Routing/UrlGeneratorInterface.php | 16 | ||||
-rw-r--r-- | src/helpers.php | 12 |
6 files changed, 73 insertions, 12 deletions
diff --git a/src/Exceptions/Handler.php b/src/Exceptions/Handler.php index f737bdd0..6b3300e6 100644 --- a/src/Exceptions/Handler.php +++ b/src/Exceptions/Handler.php @@ -76,7 +76,7 @@ class Handler protected function terminateApplicationImmediately($message = '') { echo $message; - die(); + die(1); } /** diff --git a/src/Routing/LegacyUrlGenerator.php b/src/Routing/LegacyUrlGenerator.php new file mode 100644 index 00000000..4c1e736b --- /dev/null +++ b/src/Routing/LegacyUrlGenerator.php @@ -0,0 +1,30 @@ +<?php + +namespace Engelsystem\Routing; + +/** + * Provides urls when webserver rewriting is disabled. + * + * The urls have the form <app url>/index.php?p=<path>&<parameters> + */ +class LegacyUrlGenerator extends UrlGenerator +{ + /** + * @param string $path + * @param array $parameters + * @return string urls in the form <app url>/index.php?p=<path>&<parameters> + */ + public function linkTo($path, $parameters = []) + { + $page = ltrim($path, '/'); + if (!empty($page)) { + $page = str_replace('-', '_', $page); + $parameters = array_merge(['p' => $page], $parameters); + } + + $uri = parent::linkTo('index.php', $parameters); + $uri = preg_replace('~(/index\.php)+~', '/index.php', $uri); + + return $uri; + } +} diff --git a/src/Routing/RoutingServiceProvider.php b/src/Routing/RoutingServiceProvider.php index b7db1383..beaa6a94 100644 --- a/src/Routing/RoutingServiceProvider.php +++ b/src/Routing/RoutingServiceProvider.php @@ -1,14 +1,24 @@ <?php - namespace Engelsystem\Routing; use Engelsystem\Container\ServiceProvider; +/** + * Registers the url generator depending on config. + */ class RoutingServiceProvider extends ServiceProvider { + public function register() { - $urlGenerator = $this->app->make(UrlGenerator::class); + $config = $this->app->get('config'); + $class = UrlGenerator::class; + if (! $config->get('rewrite_urls', true)) { + $class = LegacyUrlGenerator::class; + } + + $urlGenerator = $this->app->make($class); $this->app->instance('routing.urlGenerator', $urlGenerator); + $this->app->bind(UrlGeneratorInterface::class, 'routing.urlGenerator'); } } diff --git a/src/Routing/UrlGenerator.php b/src/Routing/UrlGenerator.php index 6df52425..188bac3b 100644 --- a/src/Routing/UrlGenerator.php +++ b/src/Routing/UrlGenerator.php @@ -2,14 +2,19 @@ namespace Engelsystem\Routing; -class UrlGenerator +/** + * Provides urls when rewriting on the webserver is enabled. (default) + * + * The urls have the form <app url>/<path>?<parameters> + */ +class UrlGenerator implements UrlGeneratorInterface { /** * @param string $path * @param array $parameters - * @return string + * @return string url in the form [app url]/[path]?[parameters] */ - public function to($path, $parameters = []) + public function linkTo($path, $parameters = []) { $path = '/' . ltrim($path, '/'); $request = app('request'); diff --git a/src/Routing/UrlGeneratorInterface.php b/src/Routing/UrlGeneratorInterface.php new file mode 100644 index 00000000..f1a8ffed --- /dev/null +++ b/src/Routing/UrlGeneratorInterface.php @@ -0,0 +1,16 @@ +<?php + +namespace Engelsystem\Routing; + +/** + * To switch between different URL schemes. + */ +interface UrlGeneratorInterface +{ + /** + * @param string $path + * @param array $parameters + * @return string + */ + public function linkTo($path, $parameters = []); +} diff --git a/src/helpers.php b/src/helpers.php index 5a48498a..3f118bf3 100644 --- a/src/helpers.php +++ b/src/helpers.php @@ -5,7 +5,7 @@ use Engelsystem\Application; use Engelsystem\Config\Config; use Engelsystem\Http\Request; use Engelsystem\Renderer\Renderer; -use Engelsystem\Routing\UrlGenerator; +use Engelsystem\Routing\UrlGeneratorInterface; use Symfony\Component\HttpFoundation\Session\SessionInterface; /** @@ -14,13 +14,13 @@ use Symfony\Component\HttpFoundation\Session\SessionInterface; * @param string $id * @return mixed */ -function app($id = null) +function app($instance_id = null) { - if (is_null($id)) { + if (is_null($instance_id)) { return Application::getInstance(); } - return Application::getInstance()->get($id); + return Application::getInstance()->get($instance_id); } /** @@ -114,7 +114,7 @@ function session($key = null, $default = null) /** * @param string $path * @param array $parameters - * @return UrlGenerator|string + * @return UrlGeneratorInterface|string */ function url($path = null, $parameters = []) { @@ -124,7 +124,7 @@ function url($path = null, $parameters = []) return $urlGenerator; } - return $urlGenerator->to($path, $parameters); + return $urlGenerator->linkTo($path, $parameters); } /** |