Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zmienne sesji w Singleton
tua1
post
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 23.10.2009

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


Witam

Pytanie trochę banalne, ale jak to jest z singletonami w PHP.
Wszyscy klienci strony korzystają z tego samego egzemplarza?

Chodzi mi dokładnie o to, czy mogę stworzyć rejestr potrzebnych danych sesji w innych częściach systemu, w którym będę przechowywał id, nazwę użytkownika itd.
Wiem, że mogę użyć po prostu $_SESSION, ale chcę żeby o tej tablicy wiedziała tylko klasa odpowiedzialna za autoryzację.

Czy mogę w takim przypadku użyć singletona jako reprezentacji klasy SessionRegistry, czy jest to kompletnie bezsensu bo dane te mogą zostać w każdej chwili podmienione przez inne żądanie?



Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
smentek
post
Post #2





Grupa: Zarejestrowani
Postów: 130
Pomógł: 11
Dołączył: 7.04.2003

Ostrzeżenie: (10%)
X----


Powodów jest sporo. Jeden przykładowy:

Odwołując się do zmiennych o charakterze globalnym. (Zmienne w $_SESSION są to defakto zmnienne globalne) łatwo jest o przypadkowe błędy. Jednym z częściej występujących błędów przy kożystaniu z gołej tablicy $_SESSION jest nadpisanie wcześniej umieszczonych w niej zmiennych.


  1. // Piszemy obiekt A i chcemy przechowywac go w sesji
  2. // Wrzucamy obiekt do sesji.
  3. $_SESSION['klucz'] = $objectA
  4.  
  5. // A po pararu miesiącach wracamy do kodu i piszemy inny obiekt B i także chcemy przechowywać go w sesji
  6. $_SESSION['klucz'] = $objectB


Teraz mamy dwa obiekty które kozystają z tego samego klucza. Nie pamietaliśmy bowiem, że nazwa 'klucz' została wcześniej zarezerwowana.

Używając Registry możemy np. zrzucić na sam obiekt odpowiedzialność za to, aby nadał on sobie unikalny w skali systemu identyfikator. Tak, że wyżej opisywana sytuacjia nigdy nie będzie miała szansy wystąpić.

Możemy też ograniczyć wrzucane do sesji obiekty do określonych typów. Tak że nigdy nie wrzucimy do sesji obiektu, który nie miał sie tam znaleźć i który może wyskoczyć z niej kiedyś powodując problemy.

Itd. itp.
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: 3.10.2025 - 02:35