diff --git a/app/kernel/Database.php b/app/kernel/Database.php
new file mode 100644
index 0000000000000000000000000000000000000000..8cde5e191acde25b92a50820ca0190f08d198024
--- /dev/null
+++ b/app/kernel/Database.php
@@ -0,0 +1,27 @@
+<?php
+
+class Database { // classe de gestion de connexion à la BDD
+	static protected $_instance = null; // variable contenant l'instance de connexion à la BDD, null par défaut
+	protected $_db; // variable contenant la connexion PDO à la BDD
+	
+	static public function getInstance() { // renvoie un instance de connexion à la BDD
+		if(is_null(self::$_instance)) { // si on n'a pas encore réalisé de connexion
+			self::$_instance = new Database(); // on réalise la connexion en instanciant la classe Database
+		}
+		return self::$_instance; // on renvoie l'instance qui contient tout ce qu'il faut
+	}
+	
+	protected function __construct() { // constructeur, qui instancie PDO pour se connecter à la BDD et qui stocke cette connexion dans l'attribut $_db
+		$this->_db = new PDO(
+			"mysql:host=localhost;dbname=projweb;charset=utf8", // penser à modifier le nom de l'hébergeur et de la base
+			"root", // ainsi que l'identifiant
+			"" // et le mot de passe
+		);
+	}
+	
+	public function __call($method, array $arg) { // méthode magique qui permet d'exécuter un bloc dans le cas où on appellerait une métohde qui n'est pas définie dans Database
+		// $method = le nom de la méthode appelée, array $arg = arguments passés à la méthode, dans un tableau (sans le array, chaîne de caratère avec les arguments séparés par une virgule
+		
+		return call_user_func_array(array($this->_db, $method), $arg); // appel de la méthode $methdod de l'objet $this->_db avec comme arguments $arg
+	}
+}