Completed
Push — master ( 8f69e2...0f05a9 )
by ARCANEDEV
06:56
created

MetricServiceProvider   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 51
c 0
b 0
f 0
wmc 3
lcom 0
cbo 1
ccs 10
cts 10
cp 1
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A register() 0 8 1
A boot() 0 4 1
A provides() 0 6 1
1
<?php namespace Arcanedev\LaravelMetrics;
2
3
use Arcanedev\LaravelMetrics\Contracts\Manager;
0 ignored issues
show
Bug introduced by
This use statement conflicts with another class in this namespace, Arcanedev\LaravelMetrics\Manager.

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...
4
use Arcanedev\Support\PackageServiceProvider;
5
6
/**
7
 * Class     MetricServiceProvider
8
 *
9
 * @package  Arcanedev\LaravelMetrics
10
 * @author   ARCANEDEV <[email protected]>
11
 */
12
class MetricServiceProvider extends PackageServiceProvider
13
{
14
    /* -----------------------------------------------------------------
15
     |  Properties
16
     | -----------------------------------------------------------------
17
     */
18
19
    /**
20
     * Package name.
21
     *
22
     * @var string
23
     */
24
    protected $package = 'metrics';
25
26
    /* -----------------------------------------------------------------
27
     |  Main Methods
28
     | -----------------------------------------------------------------
29
     */
30
31
    /**
32
     * Register the service provider.
33
     */
34 180
    public function register()
35
    {
36 180
        parent::register();
37
38 180
        $this->registerConfig();
39
40 180
        $this->singleton(Contracts\Manager::class, Manager::class);
41 180
    }
42
43
    /**
44
     * Boot the service provider.
45
     */
46 180
    public function boot()
47
    {
48 180
        parent::boot();
49 180
    }
50
51
    /**
52
     * Get the services provided by the provider.
53
     *
54
     * @return array
55
     */
56 4
    public function provides(): array
57
    {
58
        return [
59 4
            Contracts\Manager::class,
60
        ];
61
    }
62
}
63