|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre du Club
![]() |
Bonjour,
Voilà, je suis nouveau en PHP et je me retrouve confronté à un problème: J'ai 2 objets que je voudrais rendre globaux à l'application, c'est à dire que je voudrais les instancier une fois lors de la demande de "index.php", et ensuite pouvoir les utiliser. Mon application est très simple, elle a 3 menus qui lorsqu'on clique dessus rechargent "index.php" en lui passant des paramètres dans l'URL afin d'en déterminer le contenu. Seulement voilà: Quand la page index.php se recharge, mes objets globaux se réinitialisent aussi! Du coup je perd toutes les infos que j'avais stockées... Un objet global sert pour la connection à la base de données, et l'autre à la gestion de l'utilisateur loggué. Voici le code simplifié: index.php Code :
initObjects.php Code :
Et-ce que je fais quelque-chose de faux? Merci pour votre aide! |
||||
|
|
00
|
|
|
#2 |
|
Membre régulier
![]() Inscription : novembre 2003 Messages : 77 ![]() |
Bonjour,
Utiliser $GLOBALS[] comme variable ne permet que détendre la portée de cette variable dans le script. Mais comme pour toutes variables sa durée de vie est limité à la durée d'exécution du script. Pour conserver vos objets (ceux-ci doivent être serializable si je ne m'abuse) d'une page à l'autre vous devez utiliser les variables de sessions $_SESSION[]. Cependant, je ne sais pas trop ce que vous voulez faire exactement, mais sauvegarder une connexion ainsi est à évité selon moi (et je ne crois pas que se sera possible). |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() |
Merci pour cette réponse rapide!
Je ne connaissais pas cette info de la portée des variables au script. Je pense donc que dans mon cas, il faut que j'utilise la $_SESSION afin de sauvegarder les informations de mon utilisateur. L'objet de gestion de la base de données sera réinitialisé à chaque fois (avec un new()). Je voulais éviter cela, mais visiblement je n'ai pas le choix... Je vais essayer cela demain. Merci encore! |
|
|
00
|
|
|
#4 | |
|
Membre régulier
![]() Inscription : novembre 2003 Messages : 77 ![]() |
Citation:
Vous pouvez toujours essayer (je n'es jamais testé) cela pourrait marcher... D'autres pourront sûrement vous faire des suggestions... |
|
|
|
00
|
|
|
#5 | ||
|
Membre du Club
![]() |
Encore moi...
Cette fois j'ai le même problème, mais avec la session. Mes variables ne sont pas gardées par la session, de la même façon que tout à l'heure, lorsque index.php est rechargée... Je ne comprend pas... Pourtant je les affecte et le code passe dans l'affectation. Mais quand je recharge la page, tout ce qui est dans la session disparaît... initObjects.php Code :
|
||
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Inscription : novembre 2003 Messages : 77 ![]() |
Bonjour,
Je ne suis pas un spécialiste des sessions mais je crois que vous devez faire au début de votre script un session_start(); référence : http://ca3.php.net/function.session-start |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() |
En effet, c'était bien cela!
Merci beaucoup! Je vais à l'encontre de beaucoup de problèmes si je commence comme cela... |
|
|
00
|
|
|
#8 | |
|
En attente de confirmation mail
![]() Inscription : juin 2002 Messages : 6 164 ![]() |
Citation:
Je disais directement car il est possible de recréer une ressource à partir de ses paramètres en jouant sur les méthodes magiques __sleep et __wakeup. Mais dans le cas d'une base de données ce n'est donc pas vraiment adapté. |
|
|
|
00
|
|
|
#9 |
|
Membre du Club
![]() |
Pour l'heure, cela fonctionne bien ainsi.
La connection est toujours instanciée à chaque chargement de la page web, mais cela ne me pose pas vraiment de problème. Le plus important était l'objet de session. Je vais à présent implémenter les fonctionnalités et je verrai bien si je dois modifier quelque-chose. Merci. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com