Completed
Branch master (a19605)
by Derek Stephen
55s
created

DbPackage::addToContainer()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 22

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 14
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 22
ccs 14
cts 14
cp 1
rs 9.568
c 0
b 0
f 0
cc 2
nc 2
nop 1
crap 2
1
<?php declare(strict_types=1);
2
3
namespace Bone\Db;
4
5
use Barnacle\Container;
6
use Barnacle\RegistrationInterface;
7
use Barnacle\Exception\NotFoundException;
8
use PDO;
9
10
class DbPackage implements RegistrationInterface
0 ignored issues
show
Bug introduced by
There is at least one abstract method in this class. Maybe declare it as abstract, or implement the remaining methods: getEntityPath, hasEntityPath
Loading history...
11
{
12
    /**
13
     * @param Container $c
14
     */
15 2
    public function addToContainer(Container $c)
16
    {
17 2
        if ($c->has('db')) {
18
            $c[PDO::class] = $c->factory(function (Container $c): PDO {
19 1
                $credentials = $c->get('db');
20 1
                $host = $credentials['host'];
21 1
                $db = $credentials['database'];
22 1
                $user = $credentials['user'];
23 1
                $pass = $credentials['pass'];
24
25 1
                $dbConnection = new PDO('mysql:host=' . $host . ';dbname=' . $db, $user, $pass, [
26 1
                    PDO::ATTR_EMULATE_PREPARES => false,
27
                    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
28
                ]);
29
30 1
                return $dbConnection;
31 1
            });
32
        } else {
33 1
            throw new NotFoundException('DbPackage is registered but there is no db config. See the 
34 1
            delboy1978uk/bone-db README.', 418);
35
        }
36 1
    }
37
}
38