Bonjour,
Je me base sur le (méga) tuto Création d'objets métiers avec PDO de Julp, qui requiert de solides connaissances POO que je n'ai pas. D'où les questions de noob :
Mes classes :
- classe singleton PDO2, extension de la classe native PDO de PHP,
- classe PDO3 extension de PDO2, avec des méthodes qui lui sont propres,
- j'utilise ces 2 classes PDO2 et PDO3 distinctement: PDO2 pour pouvoir utiliser les méthodes natives de PDO, et PDO3 pour ses méthodes propres.
Le problème qui me turlupine plus que fortement:
Je voudrais pouvoir utiliser les méthodes natives de la classe PDO directement avec un objet de la classe PDO3. Or quand j'appelle une méthode PDO sur un objet créé avec la classe PDO3, PHP me jette.
Par exemple, ceci ne fonctionne pas (a priori parce que la classe PDO3 ne connait pas les PDO::Statements) :
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $connexion = PDO2::getInstance(); $pdo = new PDO3($connexion); $sql='SELECT truc, bidule FROM machin'; $pdo->prepare($sql);
Par contre, ceci fonctionne :
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $pdo= PDO2::getInstance(); $sql='SELECT truc, bidule FROM machin'; $pdo->prepare($sql);
D'où les trois questions :
1) Est-ce possible de surcharger les méthodes de PDO3 pour pouvoir utiliser les PDO::Statement directement sur un objet créé par la classe PDO3 ?
2) Pour cela, est-ce que la seule méthode possible est d'utiliser la méthode magique __call($method, $args) ou bien faut-il redéfinir toutes les méthodes PDO dans la classe PDO3 ?
3) Méthode magique __call:
J'ai lu que cette méthode magique __call($method, $args) n'était implémentée qu'à partir de PHP5.3 (pas de chance, j'ai PHP5.2.9) mais dans le tuto de Julp (chap II.B.2), il est indiqué que cette méthode est buggée en dessous de PHP5.2.6, ce qui laisse sous-entendre que je pourrais l'utiliser avec PHP5.2.9. Est-ce le cas ou bien faut-il employer une autre tactique ?
Merci d'avance
Partager