Connection PDO dans une classe

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour, je viens poster ce sujet, car je souhaiterai prendre vos avis sur un truc Svp.

ça fait plusieurs semaine que je débute en PHP, et quelques jours que je débute en PDO. Ma connexion à ma BDD en PDO, je souhaiterai donc la faire en POO.

Je voudrai savoir lequel de ces 2 manières est la + professionnel (rapidité, sécurisé…) ? Celle-ci:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
class Connect
{
    private $connec_host = 'localhost';
    private $connec_dbname = 'nombdd';
    private $connec_pseudo = 'root';
    private $connec_mdp = '';

    public function connexion() {
        try {
            $bdd = new PDO('mysql:host='.$this->connec_host.';dbname='.$this->connec_dbname, $this->connec_pseudo, $this->connec_mdp);
            $bdd->exec("SET CHARACTER SET utf8");
            $bdd->exec("SET NAMES utf8");
        }
        catch(PDOException $e) {
            die('<h3>Erreur!</h3>');
        }
        return $bdd;
    }
}

ou ceci :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class Connect
{
    private $bdd = '';
    private $connec_host = '';
    private $connec_dbname = '';
    private $connec_pseudo = '';
    private $connec_mdp = '';

    public function __construct($connec_host = 'localhost', $connec_dbname = 'nombdd', $connec_pseudo = 'root', $connec_mdp = ''){
        try {
            $this->bdd = new PDO('mysql:host='.$connec_host.';dbname='.$connec_dbname, $connec_pseudo, $connec_mdp);
            $this->bdd->exec("SET CHARACTER SET utf8");
            $this->bdd->exec("SET NAMES utf8");
        }
        catch(PDOException $e) {
            die('<h3>Erreur !</h3>');
        }
    }

    public function connexion(){
        return $this->bdd;
    }

}

Ou y a t-il une autre manière encore + pro ? Merci beaucoup

Édité par Coyote

+0 -0
Auteur du sujet

Ok, merci pour ton avis. ps: pour compléter mon 1er post, après je récupère cette classe comme ceci (pour un SELECT par exemple):

1
2
3
4
$DBase = new Connect;
$db = $DBase->connexion();

$requete = $db->prepare("SELECT...

_La seconde est plus "POO" et encore. _Ok, en quoi est-ce important que ce soit encore + POO? car avant sans POO ça fonctionnais très bien:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
    function connexion() {
        try {
            $bdd = new PDO('mysql:host='.$connec_host.';dbname='.$connec_dbname, $connec_pseudo, $connec_mdp);
            $bdd->exec("SET CHARACTER SET utf8");
            $bdd->exec("SET NAMES utf8");
        }
        catch(PDOException $e) {
            die('<h3>Erreur!</h3>');
        }
        return $bdd;
    }

(mais dans le monde professionnel j'ai vu que la POO est vraiment importante, donc voilà pourquoi je veut y faire en POO désormais, malgré que je ne vois pas encore l’intérêt de le faire avec une simple connexion à la BDD);

_Je dirai que si tu n'as besoin que d'un initialisateur, alors oui la seconde peut fonctionner. _ça veut dire quoi ceci ? que si j'ai besoin que d'un minéralisateur? ps: je suis vraiment débutant, donc j'ai pas trop compris ce que ça veut dire exactement. Merci beaucoup.

Édité par stephweb

+0 -0
Staff

_La seconde est plus "POO" et encore. _Ok, en quoi est-ce important que ce soit encore + POO? car avant sans POO ça fonctionnais très bien:

bah quand ça respecte les principes de la POO, tu peux avoir un code:

  • plus propre
  • plus facilement testable
  • et donc plus robuste.

_Je dirai que si tu n'as besoin que d'un initialisateur, alors oui la seconde peut fonctionner. _ça veut dire quoi ceci ?

"initialisateur" = qui initialise.

En fait ta classe DBConnect a un métier : initialiser la connexion. Si c'est bien ça ton but, alors c'est bon.

Certaines personnes veulent s'assurer qu'il y a des méthodes en plus, ou bien des outils spécifiques à leur besoin. Donc ils doivent concevoir leur classe autrement.

Quand tu fais de la POO, il faut que tu réfléchisse à ce qu'est le métier de ta classe. et je dis bien "le métier", il ne doit y en avoir qu'un seul.

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte