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 Slim\Interfaces\RouteCollectorInterface;
6use Slim\Routing\RouteParser;
7
8class SlimApp extends \Slim\App
9{
10    public function urlFor(string $name, array $params = []): string
11    {
12        /** @var RouteCollectorInterface $router */
13        $router = $this->getContainer()->get('router');
14        return $router->getRouteParser()->urlFor($name, $params);
15    }
16
17    /**
18     * @SuppressWarnings("PHPMD.Superglobals")
19     *
20     * @return void
21     */
22    public function determineBasePath(): void
23    {
24        $basePath = getenv('ZMS_MODULE_BASEPATH') !== false ? getenv('ZMS_MODULE_BASEPATH') : '';
25        if (empty($basePath)) {
26            $serverParams = $_SERVER;
27
28            if (!isset($serverParams['REQUEST_URI']) || !isset($serverParams['SCRIPT_NAME'])) {
29                return;
30            }
31
32            while (
33                min(strlen($serverParams['REQUEST_URI']), strlen($serverParams['SCRIPT_NAME'])) > strlen($basePath)
34                && strncmp($serverParams['REQUEST_URI'], $serverParams['SCRIPT_NAME'], strlen($basePath) + 1) === 0
35            ) {
36                $basePath = substr($serverParams['REQUEST_URI'], 0, strlen($basePath) + 1);
37            }
38        }
39
40        $this->setBasePath(rtrim($basePath, '/'));
41    }
42}