Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> otwarcie sesji w konstruktorze, dlaczego nie działa?
koodlaty
post
Post #1





Grupa: Zarejestrowani
Postów: 118
Pomógł: 3
Dołączył: 6.07.2006
Skąd: Dublin

Ostrzeżenie: (0%)
-----


Cóż - może jestem już zmęczony, może popełniłem jakiś oczywisty błąd, a może po prostu o czymś nie wiem. Tak czy siak nie działa mi kod tego rodzaju (kod uprościłem do postaci przedstawiającej esencje problemu):

  1. <?php
  2. if(!isset($_SESSION['obiekt']))
  3. {
  4. $obiekt = new klasa;
  5. $_SESSION['obiekt'] = $obiekt;
  6. }else
  7. $_SESSION['obiekt'] -> jakas_metoda();
  8.  
  9.  
  10. class klasa
  11. {
  12. function __construct()
  13. {
  14. }
  15.  
  16.  
  17. public function jakas_metoda()
  18. {
  19.  
  20. }
  21. }
  22. ?>


Dlaczego obiekt tworzony jest wciąż na nowo? Sprawdziłem – sesja uruchomiona jest prawidłowo, parser nie zgłasza błędów. Może ktoś mnie oświeci?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Tego sie nie mowi glosno. To wyplywa z logiki (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Zastanow sie. Teraz w skrypcie na poczatku sprawdzasz czy istniejesz obiekt w sesji. Jest tylko maly problem.... sesja nie zostala jeszcze wystartowana, wiec w sesji nic nie ma (wogole sesji nie ma).
Wiec logicznie rzecz biarac, zeby sprawdzic cos w sesji, trzeba najpierw ja wystartowac (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
koodlaty
post
Post #3





Grupa: Zarejestrowani
Postów: 118
Pomógł: 3
Dołączył: 6.07.2006
Skąd: Dublin

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 12.09.2006, 13:48:41 ) *
Tego sie nie mowi glosno. To wyplywa z logiki (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Zastanow sie. Teraz w skrypcie na poczatku sprawdzasz czy istniejesz obiekt w sesji. Jest tylko maly problem.... sesja nie zostala jeszcze wystartowana, wiec w sesji nic nie ma (wogole sesji nie ma).
Wiec logicznie rzecz biarac, zeby sprawdzic cos w sesji, trzeba najpierw ja wystartowac (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)


Tak na logike to mi to właśnie powinno działać.
Po kroku:

sesja nie istnieje, nie istnieje wiec obiekt - otrzymujemy false. Sprawdzamy zawartość pola w tablicy. Przecież jeśli nie istnieje pole o danym indeksie lub sama tablica otrzymujemy fałsz.
  1. <?php
  2. if(!isset($_SESSION['obiekt']))
  3. ?>


Skoro otrzymujemy false tworzony jest obiekt, w którym otwierana jest sesja. Sesja tworzona jest prawidłowo.
  1. <?php
  2. $obiekt = new klasa;
  3. ?>


Jeśli mamy już sesję zapisujemy do niej utworzony obiekt:
  1. <?php
  2. $_SESSION['obiekt'] = $obiekt;
  3. ?>


Od tej pory mamy sesję i obiekt w niej zapisany, kolejne wywołanie;
  1. <?php
  2. if(!isset($_SESSION['obiekt']))
  3. ?>

powinno zwrócić true

Gdzie leży błąd w tej logice?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.12.2025 - 23:37