Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sesja i tablice wielowymiarowe - odczyt
Forum PHP.pl > Forum > Przedszkole
Neeke
Witajcie,

od paru dni siedzę nad klasą usprawniającą moją prace z sesjami lecz napotkałem pewnego rodzaju problem i nie mogę w żaden sposób przeskoczyć go.

Pokażę części kodu i na dole dam pytanie.

Klasa Session
  1. class Session {
  2.  
  3.  
  4. ......
  5. public function read($name) {
  6. if (! is_array ( $name )) {
  7. return $_SESSION [$name];
  8. } else {
  9.  
  10. global $tmp;
  11.  
  12. $tmp = '_SESSION';
  13. $tmpp = '';
  14. foreach ( $name as $key => $value ) {
  15. $tmpp .= "['" . $value . "']";
  16. }
  17.  
  18.  
  19. $tmp .= $tmp.$tmpp;
  20.  
  21.  
  22. return $$tmp;
  23. }
  24.  
  25. ....
  26. }



  1. // zapis do niej wykonuję tak
  2. $session->save ( array ('Neeke' => array ('A' => 'a', 'B'=>'b' ) ));
  3. // odczyt tej samej sesji
  4.  
  5. echo $session->read ( array('Neeke','A') );


Pytanie,
Jak powinienem skonstruować odczytanie by mi wyświetliło wartość przechowywaną w sesji w tym przypadku ręcznie można wyciągnąć to w ten sposób
  1. echo $_SESSION['Neeke']['A'];

a jak to zrobić poprzez klasę?
Pilsener
  1. global $tmp;
  2. return $$tmp;
- a cóż to? :/

Poczytaj o metodach dostępowych, metoda powinna być elastyczna:
  1. $sesje->getInfo()->Niki; //zwróci tablicę/wartość dla "Niki"
  2. $sesje->getInfo(); //zwróci całą tablicę
  3. // i tak dalej


Przyjęło się, że odczyt odbywa się przez metody get*, a ustawienie jakiś pól klasy przez set*. Radzę też zobaczyć, jak robią to popularne frameworki (Zend, Symfony):
http://framework.zend.com/manual/en/zend.auth.html
Neeke
Dzięki za odpowiedź.


Cytat(Pilsener @ 20.05.2010, 19:20:17 ) *
  1. global $tmp;
  2. return $$tmp;
- a cóż to? :/


To jest część moich prób by wartość zmiennej stała się zmienną zmienną teraz dokładniej przejrzałem manuala i dostrzegłem że w Super globalnych nie działa to.

Jeszcze raz dziękuje za naprowadzenie na jakąś ścieżkę rozwiązującą mój problem
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.