Donc je ne dois pas faire de constructeur?
Donc je ne dois pas faire de constructeur?
Je n'ai jamais sous entendu cela. Tu dois juste savoir que par défaut, PDO appelle le constructeur d'une classe après avoir rempli ses attributs.
Donc si dans ton constructeur tu manipules les attributs de la classe, tu vas te retrouver avec des attributs qui peuvent avoir potentiellement des valeurs différentes de celles retournées par la requête.
Pour changer ce comportement il faut passer une constante supplémentaire (non documentée !) : PDO::FETCH_PROPS_LATE comme paramètre à fetchAll().
Bref, tout est expliqué dans les liens et dans les commentaires. Fais des essais et si tu ne veux pas t'embêter plus que ça, sers des toi des classes de l'ami Benjamin. Tout est déjà mâché.
Pour si j'ai bien fais :
class utilisateur:
Mon test index.php
Code : 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 class Utilisateur { protected $idUtilisateur; protected $xpUtilisateur; protected $statutUtilisateur; protected $idNiveau; function __construct() { $this->idUtilisateur = $this->idUtilisateur; $this->xpUtilisateur = $this->xpUtilisateur; $this->statutUtilisateur = $this->statutUtilisateur; $this->idNiveau = $this->idNiveau; } /* blah blah */ public function findUtilisateur($idUtilisateur) { /** @var PDO */ $db = PDOconnect::getInstance(); $sql = "SELECT * FROM Utilisateurs WHERE idUtilisateur = :id"; $stmt = $db->prepare($sql); // PDOStatement $stmt->bindValue(':id', (int) $idUtilisateur, PDO::PARAM_INT); $stmt->execute(); $res = $stmt->fetchAll(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'Utilisateur'); return $res; }
Ce qui m'affiche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?php require_once('/class/PDOconnect.php'); require_once('/class/Utilisateur.class.php'); $utilisateur = new Utilisateur(); var_dump($utilisateur->findUtilisateur(2)); ?>
Ca à l'air de marcher, ça veut dire quoi le [7]?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 array 0 => object(Utilisateur)[7] protected 'idUtilisateur' => string '2' (length=1) protected 'xpUtilisateur' => string '147' (length=3) protected 'statutUtilisateur' => string 'lol' (length=3) protected 'idNiveau' => string '2' (length=1)
Maintenant si je veux recuperer le statutUtilisateur, comment dois-je faire ?
Mets un accesseur (un méthode getX ou alors une méthode magique __get).
Le [7] est un numéro d'identification interne de l'objet (ça dit concrêtement que c'est le 7ème objet à avoir été instancié).
Comme unOui?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 public function getStatutUtilisateur() { return $this->statutUtilisateur; }
Oui par exemple. Le nom m'a l'air légèrement innaproprié vu que tu vas faire:
getStatus tout court serait mieux je pense. Après c'est à toi de voir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part $utilisateur->getStatusUtilisateur();
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager