|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||||||
![]() ![]() Gérard ErnaelstenDBA & Dev PHP Inscription : juin 2005 Messages : 3 183 ![]() |
Bonjour,
dans mon bootstrap, j'initialise une session Code :
je n'arrive pas à récupérer cette valeur dans une autre action Code :
Code :
__________________
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde Mes Articles/Critiques : Merise - Guide pratique PHPExcel PostgreSQL : Administration et exploitation d'une base de données PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle |
||||||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Inscription : mars 2006 Messages : 1 989 ![]() |
Bonjour,
qu'est-ce que tu obtiens quand tu fais un Dans l'action dans laquelle tu n'arrives pas à récupérer la valeur ? |
|
|
00
|
|
|
#3 | ||
![]() ![]() Gérard ErnaelstenDBA & Dev PHP Inscription : juin 2005 Messages : 3 183 ![]() |
sans instancié de nouveau, j'obtient null
en instanciant Code :
__________________
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde Mes Articles/Critiques : Merise - Guide pratique PHPExcel PostgreSQL : Administration et exploitation d'une base de données PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle |
||
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() ![]() Inscription : mars 2006 Messages : 1 989 ![]() |
Et comment as tu récupéré ton $session dans ton action (alors qu'il est initialiés dans le bootstrap) ?
Est-ce qu'il est passé par le registre ? |
|
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() Inscription : mai 2002 Messages : 1 022 ![]() |
Tout à fait !
Mais tu peux créer un objet qui retourne cela par une méthode statique. L'idée est de créer ensuite d'autres fonctions statiques qui stocke cela. Si dessous un exemple de code. Il s'agit d'un jeu en ligne. L'objet Sauvegarde stocke les données de la partie (composant ESD_Partie) en session. Pour l'instant le jeu, en bêta, ne permet pas de stockage en BDD, mais ce n'est pas l'objet du débat. Code :
__________________
Alexandre T. PHP5/MySQL5 Codes prêts à l'emploi 30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc... Mes articles |
||
|
|
00
|
|
|
#6 | |
![]() ![]() Gérard ErnaelstenDBA & Dev PHP Inscription : juin 2005 Messages : 3 183 ![]() |
Citation:
pour la classe statique, je trouve que cela commence à faire beaucoup de code, juste pour moi avoir un $_SESSION['id'].
__________________
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde Mes Articles/Critiques : Merise - Guide pratique PHPExcel PostgreSQL : Administration et exploitation d'une base de données PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle |
|
|
|
00
|
|
|
#7 | |||
|
Expert Confirmé
![]() ![]() Inscription : mars 2006 Messages : 1 989 ![]() |
Citation:
Ce que tu dois pouvoir faire, c'est stocker ta session dans le registre pour pouvoir le récupérer ensuite dans les actions : Code :
|
|||
|
|
00
|
|
|
#8 |
![]() ![]() Gérard ErnaelstenDBA & Dev PHP Inscription : juin 2005 Messages : 3 183 ![]() |
N'essaye pas de comprendre, je ne comprend pas moi-même
![]() Merci pour votre aide.
__________________
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde Mes Articles/Critiques : Merise - Guide pratique PHPExcel PostgreSQL : Administration et exploitation d'une base de données PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle |
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 1 249 ![]() |
Le passage par le registre ne me semble pas utile ici car il est aussi long (2 lignes de code) que de recréer un Zend_Session_Namespace à chaque fois. De plus, il est déconseillé dans la doc d'utiliser $_SESSION si on utilise Zend_Session.
Donc il me semble (voir la première réponse) qu'il y ait 2 solutions : 1) soit recréer un Zend_Session_Namespace avant chaque utilisation des sessions ; 2) soit étendre Zend_Session avec une méthode My_Session::getData($namespace, $name) et My_Session::setData($namespace, $name, $data) qui utiliseront le registre si besoin pour éviter d'instancier 10 fois le même Zend_Session_Namespace. |
|
|
00
|
|
|
#10 | ||
![]() ![]() Gérard ErnaelstenDBA & Dev PHP Inscription : juin 2005 Messages : 3 183 ![]() |
En fait, comme je vais devoir, utiliser pas mal les sessions, je me suis pencher sur cette classe My_Session.
si je fais les fonctions suivantes Code :
__________________
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde Mes Articles/Critiques : Merise - Guide pratique PHPExcel PostgreSQL : Administration et exploitation d'une base de données PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle |
||
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 1 249 ![]() |
Non. C'était uniquement pour ne pas créer une nouvelle instance de Zend_Session_Namespace à chaque appel.
J'ai moi-même codé ce My_Session. Autant c'est pratique pour getData(), autant c'est un peu lourd pour setData en cas de modifications multiples de la même session dans le même script. C'est plus simple de manipuler directement l'objet Zend_Session_Namespace... surtout si My_Session en instancie un à chaque fois (dans ce cas-là, le remède est pire que le mal). |
|
|
00
|
|
|
#12 |
|
Expert Confirmé
![]() ![]() Inscription : mars 2006 Messages : 1 989 ![]() |
|
|
|
00
|
|
|
#13 |
![]() ![]() Gérard ErnaelstenDBA & Dev PHP Inscription : juin 2005 Messages : 3 183 ![]() |
Oui, faudrais repenser cette classe,en rajoutant méthode et constructeur.
ce qui nous permettrais en cas de multiple session d'instancier cette classe et de bénéficier de méthode légère. et en cas de manipulation simple, de faire appel aux méthodes static.
__________________
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde Mes Articles/Critiques : Merise - Guide pratique PHPExcel PostgreSQL : Administration et exploitation d'une base de données PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle |
|
|
00
|
|
|
#14 | |||||
|
Membre Expert
![]() Inscription : mai 2002 Messages : 1 022 ![]() |
Citation:
Il est inutile de passer par le registre et ce serait gâcher la façon dont est codée Zend_Namespace. L'avantage de Zend_Namespace est de ne pas recopier la variable de session dans un autre tableau. Zend_Namespace se contente d'organiser la gestion du tableau $_SESSION. Son avantage est de ne pas multiplier les variables en mémoire comme on le voit avec d'autres FrameWork. Zend_Namespace étant accessible partout, il est inutile de passer par une variable de registre. Pour vos dernières remarques, je trouve préférable de mettre le premier argument en seconde place et de paramétrer la valeur par défaut. Ce qui donne : Code :
Bref ça donnerait un truc comme cela : Code :
__________________
Alexandre T. PHP5/MySQL5 Codes prêts à l'emploi 30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc... Mes articles |
|||||
|
|
00
|
|
|
#15 | ||
![]() ![]() Gérard ErnaelstenDBA & Dev PHP Inscription : juin 2005 Messages : 3 183 ![]() |
Soit, si je fais la classe suivante (a teste)
Code :
Maintenant, puis-je mélanger les méthodes statique et non-statique. Ne devrais-je pas faire deux classes ? Edit : les méthodes statiques fonctionnent en tous cas
__________________
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde Mes Articles/Critiques : Merise - Guide pratique PHPExcel PostgreSQL : Administration et exploitation d'une base de données PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle |
||
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() Inscription : mai 2002 Messages : 1 022 ![]() |
Je ferais deux classes car là l'usage de la classe est source de confusion. Aujourd'hui, c'est clair, mais dans six mois quand tu repasseras sur ce code, ce ne sera pas le cas. La seconde peut utiliser la première (celle des statiques)
__________________
Alexandre T. PHP5/MySQL5 Codes prêts à l'emploi 30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc... Mes articles |
|
|
00
|
|
|
#17 | ||||
![]() ![]() Gérard ErnaelstenDBA & Dev PHP Inscription : juin 2005 Messages : 3 183 ![]() |
Ok,
donc voici les classes, pour ma gestion de sessions Classe avec les méthodes statiques Code :
Code :
__________________
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde Mes Articles/Critiques : Merise - Guide pratique PHPExcel PostgreSQL : Administration et exploitation d'une base de données PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle |
||||
|
|
00
|
|
|
#18 | ||
|
Membre Expert
![]() Inscription : mai 2002 Messages : 1 022 ![]() |
Code :
__________________
Alexandre T. PHP5/MySQL5 Codes prêts à l'emploi 30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc... Mes articles |
||
|
|
00
|
|
|
#19 | ||
![]() ![]() Gérard ErnaelstenDBA & Dev PHP Inscription : juin 2005 Messages : 3 183 ![]() |
Dans ce cas faisons plutôt 2 classes distinct, c'est plus clair(enfin pour moi)
Code :
__________________
Il faut toujours viser la lune, car même en cas d'échec on arrive dans les étoiles. O.Wilde Mes Articles/Critiques : Merise - Guide pratique PHPExcel PostgreSQL : Administration et exploitation d'une base de données PostgreSQL : Entraînez-vous à créer et programmer une base de données relationnelle |
||
|
|
00
|
|
|
#20 |
|
Membre Expert
![]() Inscription : mai 2002 Messages : 1 022 ![]() |
Je n'avais pas remarqué que l'une héritait de l'autre. La dernière solution me semble très bien.
__________________
Alexandre T. PHP5/MySQL5 Codes prêts à l'emploi 30 projets avec codes sources complets pour créer diaporamas photos, chat, arbre généalogique, statistiques de visites, création de graphiques, moteur de recherche, Sudoku etc... Mes articles |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com