Connection PDO dans une classe

a marqué ce sujet comme résolu.

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

+0 -0

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.

+0 -0

_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.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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