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 + } +}