From 598cef3bd0287d9d88ee161039dffc09189b6972 Mon Sep 17 00:00:00 2001
From: vbochet <vbochet@gmail.com>
Date: Thu, 31 Mar 2016 19:29:53 +0200
Subject: [PATCH] =?UTF-8?q?Cr=C3=A9ation=20d'un=20fichier=20Database.php?=
 =?UTF-8?q?=20dans=20le=20r=C3=A9pertoire=20app/kernel/,=20qui=20g=C3=A8re?=
 =?UTF-8?q?=20les=20connexions=20=C3=A0=20la=20base=20de=20donn=C3=A9es=20?=
 =?UTF-8?q?(pour=20MVC).?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app/kernel/Database.php | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)
 create mode 100644 app/kernel/Database.php

diff --git a/app/kernel/Database.php b/app/kernel/Database.php
new file mode 100644
index 0000000..8cde5e1
--- /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
+	}
+}
-- 
GitLab