Application   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 39
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
wmc 7
lcom 0
cbo 1
dl 0
loc 39
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 15 1
A setupHelpCommand() 0 6 2
A setupVersionCommand() 0 6 2
A setupAutocompleteCommand() 0 6 2
1
<?php
2
3
namespace App\Core;
4
5
use App\Core\Dispatcher as AppDispatcher;
6
use InvalidArgumentException;
7
use Traversable;
8
use Zend\Console\Adapter\AdapterInterface as Console;
9
use Zend\Console\Console as DefaultConsole;
10
use ZF\Console\RouteCollection;
11
use ZF\Console\Application as ZfApplication;
12
use ZF\Console\Dispatcher;
0 ignored issues
show
Bug introduced by
This use statement conflicts with another class in this namespace, App\Core\Dispatcher.

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...
13
14
class Application extends ZfApplication
15
{
16
    public function __construct(
17
        $name,
18
        $version,
19
        $routes,
20
        Console $console = null,
21
        $dispatcher = null
22
    ) {
23
        parent::__construct(
24
            $name,
25
            $version,
26
            $routes,
27
            $console,
28
            $dispatcher
29
        );
30
    }
31
32
    protected function setupHelpCommand(RouteCollection $routeCollection, Dispatcher $dispatcher)
33
    {
34
        if ($dispatcher instanceof AppDispatcher) {
35
            return parent::setupHelpCommand($routeCollection, $dispatcher);
36
        }
37
    }
38
39
    protected function setupVersionCommand(RouteCollection $routeCollection, Dispatcher $dispatcher)
40
    {
41
        if ($dispatcher instanceof AppDispatcher) {
42
            return parent::setupVersionCommand($routeCollection, $dispatcher);
43
        }
44
    }
45
46
    protected function setupAutocompleteCommand(RouteCollection $routeCollection, Dispatcher $dispatcher)
47
    {
48
        if ($dispatcher instanceof AppDispatcher) {
49
            return parent::setupAutocompleteCommand($routeCollection, $dispatcher);
50
        }
51
    }
52
}
53