-
Notifications
You must be signed in to change notification settings - Fork 1
/
DBConnection.php
116 lines (105 loc) · 2.95 KB
/
DBConnection.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
/*
* Copyright (c) 2021. Team Biscochito.
*
* Licensed under the GNU General Public License v3.0
*
* https://www.gnu.org/licenses/gpl-3.0.html
*
* Permissions of this strong copyleft license are conditioned on making available complete
* source code of licensed works and modifications, which include larger works using a licensed
* work, under the same license. Copyright and license notices must be preserved. Contributors
* provide an express grant of patent rights.
*/
/**
* Class DBConnection
*/
class DBConnection {
/**
* @var array de settings
*/
protected array $settings;
/**
* @var PDO|null
*/
public ?PDO $dbc = null;
/**
* DBConnection constructor.
*
* Función que devuelve una instancia de conexión a la BBDD
*
* 1.- Debemos recoger los datos de los settings
* 2.- Invocar al método getter que devuelve la instancia de la conexión
*
* @param array $config Contiene los settings de la conexión
*/
public function __construct(array $config) {
$this->settings = $config;
$this->getDBConnection();
}
/**
* Función getDBConnection()
*
* Intentar obtener una instancia de la conexion siempre que no este creada ya
*/
public function getDBConnection() {
if ($this->dbc == NULL) {
$dsn = "" . $this->settings['driver'] .
":host=" . $this->settings['host'] .
";dbname=" . $this->settings['dbname'] .
";charset=utf8mb4";
$options = array();
try {
$this->dbc = new PDO($dsn, $this->settings['username'], $this->settings['password'], $options);
} catch (PDOException $ex) {
echo __LINE__ . $ex->getMessage();
}
}
}
// /**
// * Función getQuery
// *
// * Ejecuta una consulta de tipo select
// *
// * @param $sql
// *
// * @return string|PDOStatement
// */
// public function getQuery($sql) {
// try {
// $resultset = $this->dbc->query($sql);
//
// } catch (PDOException $ex) {
// echo $ex->getMessage();
// return $ex->getMessage();
// }
// return $resultset;
// }
// /**
// * Función runQuery
// *
// * Ejecuta consultas de tipo DELETE, INSERT...
// *
// * @param $sql, se le pasa la consulta
// *
// * @return int donde retorna un entero, diciendo las filas afectadas
// */
// public function runQuery($sql): int {
// try {
// $lineasAfectadas = $this->dbc->exec($sql);
// } catch (PDOException $ex) {
// echo $ex->getMessage();
// return $ex->getMessage();
// }
// return $lineasAfectadas;
// }
/**
* @return PDO|null
*/
public function getCon() {
if ($this->dbc instanceof PDO) {
return $this->dbc;
}
return null;
}
}