Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
3 / 3
CRAP
100.00% covered (success)
100.00%
12 / 12
PathPackage
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
3 / 3
8
100.00% covered (success)
100.00%
12 / 12
 __construct
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
7 / 7
 getUrl
100.00% covered (success)
100.00%
1 / 1
4
100.00% covered (success)
100.00%
4 / 4
 getBasePath
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
1<?php
2
3/*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace Symfony\Component\Asset;
13
14use Symfony\Component\Asset\Context\ContextInterface;
15use Symfony\Component\Asset\VersionStrategy\VersionStrategyInterface;
16
17/**
18 * Package that adds a base path to asset URLs in addition to a version.
19 *
20 * In addition to the provided base path, this package also automatically
21 * prepends the current request base path if a Context is available to
22 * allow a website to be hosted easily under any given path under the Web
23 * Server root directory.
24 *
25 * @author Fabien Potencier <fabien@symfony.com>
26 */
27class PathPackage extends Package
28{
29    private $basePath;
30
31    /**
32     * @param string $basePath The base path to be prepended to relative paths
33     */
34    public function __construct(string $basePath, VersionStrategyInterface $versionStrategy, ContextInterface $context = null)
35    {
36        parent::__construct($versionStrategy, $context);
37
38        if (!$basePath) {
39            $this->basePath = '/';
40        } else {
41            if ('/' != $basePath[0]) {
42                $basePath = '/'.$basePath;
43            }
44
45            $this->basePath = rtrim($basePath, '/').'/';
46        }
47    }
48
49    /**
50     * {@inheritdoc}
51     */
52    public function getUrl(string $path)
53    {
54        $versionedPath = parent::getUrl($path);
55
56        // if absolute or begins with /, we're done
57        if ($this->isAbsoluteUrl($versionedPath) || ($versionedPath && '/' === $versionedPath[0])) {
58            return $versionedPath;
59        }
60
61        return $this->getBasePath().ltrim($versionedPath, '/');
62    }
63
64    /**
65     * Returns the base path.
66     *
67     * @return string The base path
68     */
69    public function getBasePath()
70    {
71        return $this->getContext()->getBasePath().$this->basePath;
72    }
73}