Bonjour à toutes et à tous,
Je suis sur un problème depuis un bon moment dont j'ai du mal à trouver la solution ...
En effet, j'ai crée une classe abstraite Modele (qui ne peut donc pas être instancié) contenant une méthode statique load($nom) permettant de charger un modele en fonction de son nom donné en paramètre.
J'invoque la méthode statique de cette façon
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $membre = Modele::load("membre") ... $membre->read(); // message d'erreurJe comprends bien le message d'erreur mais comment procéder pour utiliser PDO dans un contexte statique.Call to a member function prepare() on a non-object
modele.php
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 abstract class Modele { public $table; public $id; // traitement pour la lecture des donnees dans la table public function read($fields = null) { // $fields represente les champs de la table categories if ($fields == null) { $fields = "*"; } $db = DBConnect::getBDD(); // on se connecte à la Base de données $sql = "SELECT $fields FROM " . $this->table . " WHERE mid =" . $this->id; // $this->id fait reference a l'identifiant de l'enregistrement que l'on veut recuperer $stm = $db->prepare($sql); // on prepare la requete a executer sur le serveur $stm->execute(); // on execute la requete preparee // PDO::FETCH_ASSOC: retourne un tableau indexe par le nom de la colonne comme retournee dans le jeu de resultats $data = $stm->fetch(PDO::FETCH_ASSOC); // $data est un tableau indexe foreach ($data as $k => $v) { // un tableau associatif $this->$k = $v; // on associe la cle recupere avec sa valeur } //return $data; $db = null; // on ferme la connexion } public static function load($nom) { // $nom correspond au nom du fichier charge require("$nom.php"); // le fichier contenant l'interaction avec la Base de donnees return new $nom(); // on retourne une instance de l'objet charge } // fin static function load($nom)
index.php
Merci d'avance.
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $db = DBConnect::getBDD(); // on se connecte à* la Base de données $membre = Modele::load("membre"); $membre->mid = 2; $membre->read(); echo $membre->pseudo;
Transact.
Partager