Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
15 / 15
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
DatabaseFactory
100.00% covered (success)
100.00%
15 / 15
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 __invoke
100.00% covered (success)
100.00%
15 / 15
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3declare(strict_types=1);
4
5namespace App\Factory;
6
7use PDO;
8use Psr\Container\ContainerInterface;
9
10use function sprintf;
11
12final class DatabaseFactory
13{
14    public function __invoke(ContainerInterface $container): PDO
15    {
16        $settings = $container->get('settings')['db'];
17
18        $dsn = sprintf(
19            '%s:host=%s;port=%s;dbname=%s',
20            $settings['driver'],
21            $settings['host'],
22            $settings['port'],
23            $settings['database'],
24        );
25
26        $pdo = new PDO(
27            $dsn,
28            $settings['username'],
29            $settings['password'],
30            $settings['options'],
31        );
32
33        return $pdo;
34    }
35}