Connexion POO
papyclic
Messages postés
446
Date d'inscription
Statut
Membre
Dernière intervention
-
papyclic Messages postés 446 Date d'inscription Statut Membre Dernière intervention -
papyclic Messages postés 446 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai créé un site vraiment traditionnel (procédural), mais je souhaite passer à la Programmation Orienté Objet.
Ma première class que je dois créé c'est la connexion à ma BDD.
Sur le net il y en a énormément je suis un peu perdu.
Voilà ce que j'ai trouvé, pouvez-vous me dire si ça pourrais convenir ou si vous avez peut-être une class qui serai mieux adaptée.
Merci énormément
J'ai créé un site vraiment traditionnel (procédural), mais je souhaite passer à la Programmation Orienté Objet.
Ma première class que je dois créé c'est la connexion à ma BDD.
Sur le net il y en a énormément je suis un peu perdu.
Voilà ce que j'ai trouvé, pouvez-vous me dire si ça pourrais convenir ou si vous avez peut-être une class qui serai mieux adaptée.
Merci énormément
<?php class Config { /* DATABASE CONFIGURATION */ const HOTE = 'localhost'; const DBNAME = 'monsite'; const USERNAME = 'root'; const PASSWORD = ''; } ?>
<?php class Database extends PDO { public function __construct() { try { parent::__construct('mysql:host=' . Config::HOTE . ';dbname=' . Config::DBNAME, Config::USERNAME, Config::PASSWORD); $this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); } catch(Exception $e) { echo 'Impossible de se connecter à la base de donnée</br>'; echo 'Erreur : ' . $e->getMessage() . '<br />'; echo 'N° : ' . $e->getCode(); } } } ?>
A voir également:
- Connexion POO
- Gmail connexion - Guide
- Connexion chromecast - Guide
- Gmail connexion autre compte - Guide
- Site inaccessible n'autorise pas la connexion - Guide
- Connexion sctr - Forum Discord
5 réponses
Salut,
C'est pas comme ça qu'on fait, et on déclare pas deux page php dans la même page !
D'ailleurs la POO n'est pas propre à PHP, tu confonds avec PDO, la POO s'applique à un ensemble de language qui est orientée objet.
Voila une déclaration de connexion en PDO avec déclaration d'erreur au besoin :
Et pour fermer la connexion tu ajoute en fin de page de t'es requete un simple "null", comme ceci :
Je te conseil vivement d'aller voir le maneul PHP et de connaitre l'utilité et la méthodologie de l'orientée objet, et après tu ira voir l'utilité d'un framework, car ici c'est que du "brut" ^^
C'est pas comme ça qu'on fait, et on déclare pas deux page php dans la même page !
D'ailleurs la POO n'est pas propre à PHP, tu confonds avec PDO, la POO s'applique à un ensemble de language qui est orientée objet.
Voila une déclaration de connexion en PDO avec déclaration d'erreur au besoin :
<?php try { $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); foreach($dbh->query('SELECT * from FOO') as $row) { print_r($row); } $dbh = null; } catch (PDOException $e) { print "Erreur !: " . $e->getMessage() . "<br/>"; die(); } ?>
Et pour fermer la connexion tu ajoute en fin de page de t'es requete un simple "null", comme ceci :
$dbh = null;
Je te conseil vivement d'aller voir le maneul PHP et de connaitre l'utilité et la méthodologie de l'orientée objet, et après tu ira voir l'utilité d'un framework, car ici c'est que du "brut" ^^
Salut,
Si tu souhaites utiliser une classe qui étend PDO, il faut que celle-ci te retourne l'instance PDO pour pouvoir utiliser les méthodes query, prepare, etc sur cette instance.
Souvent on utilise également le pattern singleton pour ne récupérer qu'une seule instance de PDO à chaque appel de la classe (pour ne faire la connexion qu'une seule fois).
Tu peux trouver un exemple ici : https://apprendre-php.com/tutoriels/tutoriel-47-classe-singleton-d-accs-aux-sgbd-intgrant-pdo.html
Bonne journée
Si tu souhaites utiliser une classe qui étend PDO, il faut que celle-ci te retourne l'instance PDO pour pouvoir utiliser les méthodes query, prepare, etc sur cette instance.
Souvent on utilise également le pattern singleton pour ne récupérer qu'une seule instance de PDO à chaque appel de la classe (pour ne faire la connexion qu'une seule fois).
Tu peux trouver un exemple ici : https://apprendre-php.com/tutoriels/tutoriel-47-classe-singleton-d-accs-aux-sgbd-intgrant-pdo.html
Bonne journée
Bonjour
Je voudrais vous demander si cette connexion pour ma BDD serait-elle bien adaptée.
Merci de votre avis.
Je voudrais vous demander si cette connexion pour ma BDD serait-elle bien adaptée.
Merci de votre avis.
<?php class SPDO { private $PDOInstance = null; private static $instance = null; const DEFAULT_SQL_USER = 'root'; const DEFAULT_SQL_HOST = 'localhost'; const DEFAULT_SQL_PASS = ''; const DEFAULT_SQL_DTB = 'monsite'; private function __construct() { $this->PDOInstance = new PDO('mysql:dbname='.self::DEFAULT_SQL_DTB.';host='.self::DEFAULT_SQL_HOST,self::DEFAULT_SQL_USER ,self::DEFAULT_SQL_PASS); } public static function getInstance() { if(is_null(self::$instance)) { self::$instance = new SPDO(); } return self::$instance; } public function query($query) { return $this->PDOInstance->query($query); } }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
Alors voilà j'ai trouvé pour une connexion à ma BDD cette class.
Pour moi elle est très compréhensible dites-moi si je peux l'utiliser telle quelle s'ils vous plait.
En vous remerciant
Alors voilà j'ai trouvé pour une connexion à ma BDD cette class.
Pour moi elle est très compréhensible dites-moi si je peux l'utiliser telle quelle s'ils vous plait.
En vous remerciant
class connexion { private static $instance; private $type = "mysql"; private $host = "localhost"; private $dbname = "monsite"; private $username = "root"; private $password = ''; private $dbh; /*** Lance la connexion à la base de donnée en le mettant * dans un objet PDO qui est stocké dans la variable $dbh * @access private */ private function __construct() { try { $this->dbh = new PDO ( $this->type.':host='.$this->host.'; dbname='.$this->dbname, $this->username, $this->password, array(PDO::ATTR_PERSISTENT => true) ); $req = "SET NAMES UTF8"; $result = $this->dbh->prepare($req); $result->execute(); } catch(PDOException $e) { echo "<div class='error'>Erreur !: ".$e->getMessage()."</div>"; die(); } } /*** Regarde si un objet connexion a déjà été instancier, * si c'est le cas alors il retourne l'objet déjà existant * sinon il en créer un autre. * @return $instance */ public static function getInstance() { if (!self::$instance instanceof self) { self::$instance = new self; } return self::$instance; } /*** Permet de récuprer l'objet PDO permettant de manipuler la base de donnée * @return $dbh */ public function getDbh() { return $this->dbh; } } ?>