Completed
Push — master ( e03155...588b6d )
by Park Jong-Hun
03:05
created

Application::getEventManager()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
c 3
b 0
f 0
dl 0
loc 10
rs 9.4285
cc 2
eloc 5
nc 2
nop 0
1
<?php
2
3
namespace Core;
4
5
use JBZoo\Event\EventManager;
0 ignored issues
show
Bug introduced by
This use statement conflicts with another class in this namespace, Core\EventManager.

Let’s assume that you have a directory layout like this:

.
|-- OtherDir
|   |-- Bar.php
|   `-- Foo.php
`-- SomeDir
    `-- Foo.php

and let’s assume the following content of Bar.php:

// Bar.php
namespace OtherDir;

use SomeDir\Foo; // This now conflicts the class OtherDir\Foo

If both files OtherDir/Foo.php and SomeDir/Foo.php are loaded in the same runtime, you will see a PHP error such as the following:

PHP Fatal error:  Cannot use SomeDir\Foo as Foo because the name is already in use in OtherDir/Foo.php

However, as OtherDir/Foo.php does not necessarily have to be loaded and the error is only triggered if it is loaded before OtherDir/Bar.php, this problem might go unnoticed for a while. In order to prevent this error from surfacing, you must import the namespace with a different alias:

// Bar.php
namespace OtherDir;

use SomeDir\Foo as SomeDirFoo; // There is no conflict anymore.
Loading history...
6
7
class Application
8
{
9
    private $siteConfig = [];
10
11
    /**
12
     * Singleton: private constructor
13
     */
14
    private function __construct()
15
    {
16
    }
17
18
    /**
19
     * @return Application
20
     */
21
    public static function getInstance()
22
    {
23
        static $instance = null;
24
25
        if ($instance === null) {
26
            $instance = new self();
27
        }
28
29
        return $instance;
30
    }
31
32
    public function setSiteConfig(array $siteConfig)
33
    {
34
        $this->siteConfig = $siteConfig;
35
    }
36
37
38
    /**
39
     * Return url path with site url
40
     * @param  string $url sub url
41
     * @return string
42
     */
43
    public function url($url = '')
44
    {
45
        $url = $url === '/' ? '' : $url;
46
        return $this->siteConfig['url'] . $url;
47
    }
48
49
    public function getPublicUrl($url = '')
50
    {
51
        $url = $url === '/' ? '' : $url;
52
        return $this->siteConfig['publicPath'] . $url;
53
    }
54
}
55