DbTrait   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 4
eloc 8
dl 0
loc 28
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A connectDb() 0 12 4
1
<?php
2
3
/* Copyright (C) 2024      Rafael San José      <[email protected]>
4
 *
5
 * This program is free software; you can redistribute it and/or modify
6
 * it under the terms of the GNU General Public License as published by
7
 * the Free Software Foundation; either version 3 of the License, or
8
 * any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
 */
18
19
namespace Alxarafe\Base\Controller\Trait;
20
21
use Alxarafe\Base\Database;
22
use DebugBar\DebugBarException;
23
use stdClass;
24
25
/**
26
 * Trait for controllers using databases.
27
 */
28
trait DbTrait
29
{
30
    /**
31
     * Instance of Database
32
     *
33
     * @var Database|null
34
     */
35
    public static ?Database $db = null;
36
37
    /**
38
     * Connect to the specified database.
39
     *
40
     * @param stdClass|null $db
41
     * @return bool
42
     * @throws DebugBarException
43
     */
44
    public static function connectDb(stdClass|null $db = null): bool
45
    {
46
        if (static::$db !== null) {
47
            return true;
48
        }
49
50
        if ($db === null || !Database::checkDatabaseConnection($db)) {
51
            return false;
52
        }
53
54
        static::$db = new Database($db);
55
        return true;
56
    }
57
}
58