Lines 61.53% 8 / 13
Functions and Methods 50.00% 1 / 2
Classes and Traits 0.00% 0 / 1
Name Lines Functions and Methods CRAP Classes and Traits
SlimApp 61.53% 8 / 13 50.00% 1 / 2 11.64 0.00% 0 / 1
 urlFor 100.00% 1 / 1 100.00% 1 / 1 1
 determineBasePath 58.33% 7 / 12 0.00% 0 / 1 10.54
1<?php
2
3namespace BO\Slim;
4
5use Psr\Container\ContainerInterface;
6
7/**
8 * @extends \Slim\App<ContainerInterface|null>
9 */
10class SlimApp extends \Slim\App
11{
12    public function urlFor(string $name, array $params = []): string
13    {
14        return $this->getRouteCollector()->getRouteParser()->urlFor($name, $params);
15    }
16
17    /**
18     * @SuppressWarnings("PHPMD.Superglobals")
19     */
20    public function determineBasePath(): void
21    {
22        $envBasePath = getenv('ZMS_MODULE_BASEPATH');
23        $basePath = $envBasePath !== false ? $envBasePath : '';
24        if ($basePath === '') {
25            $requestUri = $_SERVER['REQUEST_URI'] ?? null;
26            $scriptName = $_SERVER['SCRIPT_NAME'] ?? null;
27            if (!is_string($requestUri) || !is_string($scriptName)) {
28                return;
29            }
30
31            while (
32                min(strlen($requestUri), strlen($scriptName)) > strlen($basePath)
33                && strncmp($requestUri, $scriptName, strlen($basePath) + 1) === 0
34            ) {
35                $nextPath = substr($requestUri, 0, strlen($basePath) + 1);
36                $basePath = $nextPath;
37            }
38        }
39
40        $this->setBasePath(rtrim($basePath, '/'));
41    }
42}