Bonjour,
Voila je rencontre un petit problème avec mon code. Je débute en POO mais j'ai des connaissances en PHP, qui je pense me permettent de suivre les cours de POO. Il faut se lancer !
Ce que je fais
Je souhaite utiliser ma classe A (connexion, requêtes base de données) dans ma classe B, C, D...
Ma classe A ressemble à ça :
<?php
class Database{
private $db_name = '$';
private $db_user = '$';
private $db_host = '$$$';
private $db_pass = '$';
protected $pdo;
private function getPDO(){
if($this->pdo === null){
$pdo = new PDO('mysql:host='.$this->db_host.';dbname='.$this->db_name.';charset=utf8', $this->db_user, $this->db_pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->pdo = $pdo;
}
return $this->pdo;
}
public function query($statement, $params = null){
$req = $this->prepare($statement);
$req->execute($params);
$datas = $req->fetchAll(PDO::FETCH_OBJ);
return $datas;
}
?>
Ce que je veux
Je ne sais pas comment trop m'y prendre pour l'utiliser "proprement" dans mes autres classes. En fait, ce qui me rebute, c'est la connexion. Dans une page PHP, je peux très bien utiliser plusieurs autres classes (membres, appareils...). Qui elles-même feront appel à la classe A.
Je pensais la solution de l'extension (via extends) mais cette architecture n'est-elle pas "réservée" à la modification de la classe parente ?
Je pensais également à instancier la classe A dans une fonction de mes autres classes. Mais, au vu du fonctionnement de la POO, chaque objet est "indépendant". Donc, instancier une connexion sur la classe B, C, D... n'est pas très propre à mon sens. Voyez-vous ce que je veux dire ?
Quelles solutions me conseilleriez-vous ?
PS : Je cherche pas forcément qu'on me ponde un code tout fait... Je suis plutôt à la recherche de conseils... Merci d'avance, et je vous remercie de votre aide ainsi que de vos conseils bienveillants :)