13stephweb13 | Bonjour,
je suis débutant en POO.
j'aurai une question SVP.
Pour une classe connexion avec la BDD, est-ce mieux de le faire avec un constructeur, ou avec un singleton?
Voici mes 2 codes, je ne sais pas le quel choisir. Svp, je souhaiterai savoir, lequel des 2 fait le + pro, et le + performant.
Singleton:
Code :
- <?php
- class DB
- {
- private static $_bdd;
- private static $_Host = 'localhost';
- private static $_DbName = 'cms';
- private static $_Pseudo = 'root';
- private static $_Mdp = '';
- public static function getDB() {
- if(is_null(self::$_bdd)) {
- try {
- self::$_bdd = new PDO('mysql:host='.self::$_Host.';charset=utf8;dbname='.self::$_DbName, self::$_Pseudo, self::$_Mdp);
- }
- catch(PDOException $e) {
- die('<h3>Une erreur est survenue lors du chargement de la page. Veuillez essayer d\'actualiser la page, ou revenir plus tard. Merci.</h3>');
- }
- } // END if_null
- return self::$_bdd;
- }
- } // END class
- ?>
|
Ou Constructeur:
Code :
- <?php
- class Db
- {
- private $host = 'localhost';
- private $name = 'ecommerce';
- private $user = 'root';
- private $pass = '';
- private $connexion;
- public function __construct($host=NULL, $name=NULL, $user=NULL, $pass=NULL) {
- if($host != NULL) {
- $this->host = $host;
- $this->name = $name;
- $this->user = $user;
- $this->pass = $pass;
- }
- try {
- $this->connexion = new PDO('mysql:host='.$this->host.';dbname='.$this->name,
- $this->user,$this->pass, array(
- PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8',
- PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING
- ));
- }
- catch(PDOException $e) {
- die('Erreur de connection');
- }
- } // END __construct
- } // END class
- ?>
|
Merci beaucoup. Message édité par 13stephweb13 le 28-05-2015 à 15:15:45
|