Test Failed
Push — master ( b6dff7...455f41 )
by Gabriel
12:43 queued 11s
created

Manager   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 69
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

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

4 Methods

Rating   Name   Duplication   Size   Complexity  
A newConnectionFromConfig() 0 11 1
A createNewConnection() 0 21 3
A initNewConnection() 0 6 2
A newConnection() 0 4 1
1
<?php
2
3
namespace Nip\Database;
4
5
use Nip\Database\Connections\Connection;
0 ignored issues
show
Bug introduced by
This use statement conflicts with another class in this namespace, Nip\Database\Connection.

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
/**
8
 * Class Manager.
9
 * @deprecated use \Nip\Database\DatabaseManager
10
 */
11
class Manager extends DatabaseManager
12
{
13
14
    /**
15
     * @param $config
16
     *
17
     * @return Connection
18
     */
19
    public function newConnectionFromConfig($config)
20
    {
21
        $connection = $this->createNewConnection(
22
            $config->adapter,
23
            $config->host,
24
            $config->user,
25
            $config->password,
26
            $config->name);
27
28
        return $connection;
29
    }
30
31
    /**
32
     * @param $adapter
33
     * @param $host
34
     * @param $user
35
     * @param $password
36
     * @param $database
37
     *
38
     * @return Connection
39
     */
40
    public function createNewConnection($adapter, $host, $user, $password, $database)
41
    {
42
        try {
43
            $connection = $this->newConnection();
44
45
            $adapter = $connection->newAdapter($adapter);
46
            $connection->setAdapter($adapter);
47
48
            $connection->connect($host, $user, $password, $database);
49
            $this->initNewConnection($connection);
50
        } catch (Exception $e) {
51
            echo '<h1>Error connecting to database</h1>';
52
            if (app()->get('staging')->getStage()->inTesting()) {
53
                echo '<h4>'.$e->getMessage().'</h4>';
54
                $e->log();
0 ignored issues
show
Bug introduced by
The method log() does not seem to exist on object<Nip\Database\Exception>.

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
55
            }
56
            die();
57
        }
58
59
        return $connection;
60
    }
61
62
    /**
63
     * @param $connection
64
     */
65
    public function initNewConnection($connection)
66
    {
67
        if ($this->getBootstrap()->getDebugBar()->isEnabled()) {
68
            $this->getBootstrap()->getDebugBar()->initDatabaseAdapter($connection->getAdapter());
69
        }
70
    }
71
72
    /**
73
     * @return Connection
74
     */
75
    public function newConnection()
76
    {
77
        return new Connection(false);
0 ignored issues
show
Documentation introduced by
false is of type boolean, but the function expects a object<PDO>|object<Closure>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
78
    }
79
}
80