![]() |
![]() |
![]()
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? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 130 Pomógł: 11 Dołączył: 7.04.2003 Ostrzeżenie: (10%) ![]() ![]() |
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.
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 02:35 |