PDO dans class "Membre"
Résolu/Fermé
MichaelOfCourse
Messages postés
87
Date d'inscription
jeudi 21 juin 2012
Statut
Membre
Dernière intervention
2 septembre 2016
-
16 sept. 2013 à 20:22
MichaelOfCourse Messages postés 87 Date d'inscription jeudi 21 juin 2012 Statut Membre Dernière intervention 2 septembre 2016 - 17 sept. 2013 à 22:58
MichaelOfCourse Messages postés 87 Date d'inscription jeudi 21 juin 2012 Statut Membre Dernière intervention 2 septembre 2016 - 17 sept. 2013 à 22:58
2 réponses
Pitet
Messages postés
2826
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
21 juillet 2022
525
17 sept. 2013 à 20:57
17 sept. 2013 à 20:57
Salut,
La variable $pdo dans ton constructeur est une variable locale (cf. Portée des variables) : essaye un simple var_dump($pdo) au début de ton constructeur pour t'en convaincre.
Il te faut donc l'initialiser.
Bon développpement
La variable $pdo dans ton constructeur est une variable locale (cf. Portée des variables) : essaye un simple var_dump($pdo) au début de ton constructeur pour t'en convaincre.
Il te faut donc l'initialiser.
Bon développpement
Utilisateur anonyme
16 sept. 2013 à 23:40
16 sept. 2013 à 23:40
Bonjour
Si tu es sûr que ton initialisation de $pdo marche bien, c'est sûrement que tu essayes d'instancier un objet de la classe "membre" AVANT d'avoir initialisé $pdo.
Si tu es sûr que ton initialisation de $pdo marche bien, c'est sûrement que tu essayes d'instancier un objet de la classe "membre" AVANT d'avoir initialisé $pdo.
MichaelOfCourse
Messages postés
87
Date d'inscription
jeudi 21 juin 2012
Statut
Membre
Dernière intervention
2 septembre 2016
6
17 sept. 2013 à 20:15
17 sept. 2013 à 20:15
Le problème, c'est que non justement, la premiere chose que je fais sur chacune de mes pages est d'inclure le fichier de connexion a la bdd, donc l'initialisation de $pdo :/
17 sept. 2013 à 21:35
J'étais pas du tout au courant de la portée des variables, mais en effet, c'est bon a savoir :)
Bonne soirée a toi !
17 sept. 2013 à 21:43
Bien sûr que c'est une variable locale, honte à moi ne ne pas l'avoir remarqué :(
Par contre, je ne partage pas ta conclusion. Qu'entends-tu par l'initialiser ? Recréer une instance à chaque appel du constructeur, et probablement aussi dans chaque fonction où cette variable est utilisée ?
Il me semble beaucoup plus simple et rationnel de traiter $pdo comme la variable globale qu'elle est et de mettre un simple global $pdo; dans les fonctions qui l'utilisent. Je sais, on n'aime pas beaucoup ça les variables globales, mais je crois que c'est un cas ou leur emploi est justifié.
17 sept. 2013 à 21:51
17 sept. 2013 à 21:58
global $pdo;
au début de chaque fonction (en particulier ton constructeur) qui utilise cette variable.
Comme ça, c'est toujours la même variable qui est utilisée.
Sans ça, en initialisant la variable, je suppose que tu faisais un new PDO : nouvelle connexion au serveur, nouvelle vérification du nom d'utilisateur et du mot de passe etc... à chaque fois. Beaucoup plus de boulot pour le serveur.
17 sept. 2013 à 22:03
Si c'est pas le cas je comprends pas la logique de php, la variable $pdo est une variable locale, MAIS en disant a une fonction qu'elle peut l'utiliser, elle peut l'utiliser ? O.o
Ou alors j'ai pas tout compris ;)