Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
63.64% covered (warning)
63.64%
7 / 11
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
SlimApp
63.64% covered (warning)
63.64%
7 / 11
50.00% covered (danger)
50.00%
1 / 2
11.08
0.00% covered (danger)
0.00%
0 / 1
 urlFor
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 determineBasePath
55.56% covered (warning)
55.56%
5 / 9
0.00% covered (danger)
0.00%
0 / 1
11.30
1<?php
2
3namespace BO\Slim;
4
5use Psr\Container\ContainerInterface;
6use Slim\Interfaces\RouteCollectorInterface;
7use Slim\Routing\RouteParser;
8
9/**
10 * @extends \Slim\App<ContainerInterface|null>
11 */
12class SlimApp extends \Slim\App
13{
14    public function urlFor(string $name, array $params = []): string
15    {
16        /** @var RouteCollectorInterface $router */
17        $router = $this->getContainer()->get('router');
18        return $router->getRouteParser()->urlFor($name, $params);
19    }
20
21    /**
22     * @SuppressWarnings("PHPMD.Superglobals")
23     *
24     * @return void
25     */
26    public function determineBasePath(): void
27    {
28        $basePath = getenv('ZMS_MODULE_BASEPATH') !== false ? getenv('ZMS_MODULE_BASEPATH') : '';
29        if (empty($basePath)) {
30            $serverParams = $_SERVER;
31
32            if (!isset($serverParams['REQUEST_URI']) || !isset($serverParams['SCRIPT_NAME'])) {
33                return;
34            }
35
36            while (
37                min(strlen($serverParams['REQUEST_URI']), strlen($serverParams['SCRIPT_NAME'])) > strlen($basePath)
38                && strncmp($serverParams['REQUEST_URI'], $serverParams['SCRIPT_NAME'], strlen($basePath) + 1) === 0
39            ) {
40                $basePath = substr($serverParams['REQUEST_URI'], 0, strlen($basePath) + 1);
41            }
42        }
43
44        $this->setBasePath(rtrim($basePath, '/'));
45    }
46}