Completed
Push — 1.x ( 249f8e...9ce618 )
by Akihito
11s
created

ProfilerProvider   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 14
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 6
c 1
b 0
f 0
dl 0
loc 14
rs 10
wmc 2

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 2 1
A get() 0 8 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Ray\AuraSqlModule;
6
7
use Aura\Sql\Profiler\Profiler;
8
use Override;
9
use Psr\Log\LoggerInterface;
10
use Ray\Di\Provider;
11
12
final class ProfilerProvider implements Provider
0 ignored issues
show
Deprecated Code introduced by
The interface Ray\Di\Provider has been deprecated: User ProviderInterface instead ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-deprecated  annotation

12
final class ProfilerProvider implements /** @scrutinizer ignore-deprecated */ Provider

This interface has been deprecated. The supplier of the interface has supplied an explanatory message.

The explanatory message should give you some clue as to whether and when the interface will be removed and what other interface to use instead.

Loading history...
13
{
14
    public function __construct(private LoggerInterface $logger)
15
    {
16
    }
17
18
    #[Override]
19
    public function get(): Profiler
20
    {
21
        $profiler = new Profiler($this->logger);
22
        $profiler->setLogFormat('{duration}: {function} {statement}:{values}');
23
        $profiler->setActive(true);
24
25
        return $profiler;
0 ignored issues
show
Bug Best Practice introduced by
The expression return $profiler returns the type Aura\Sql\Profiler\Profiler which is incompatible with the return type mandated by Ray\Di\ProviderInterface::get() of Ray\Di\T.

In the issue above, the returned value is violating the contract defined by the mentioned interface.

Let's take a look at an example:

interface HasName {
    /** @return string */
    public function getName();
}

class Name {
    public $name;
}

class User implements HasName {
    /** @return string|Name */
    public function getName() {
        return new Name('foo'); // This is a violation of the ``HasName`` interface
                                // which only allows a string value to be returned.
    }
}
Loading history...
26
    }
27
}
28