![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 5 Dołączył: 13.07.2008 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Na wstępie krótki opis. Nie chce korzystać z singletona do klas typu db, session, input etc. I prawdopodobnie tutaj znajduje się mój problem. Mianowicie chodzi o klasę obsługi sesji, która wygląda mniej więcej tak (jest to szablon skrótowy - naprawdę ma połączenie z bazą danych i zapisuje dane do niej a nie do $_SESSION):
Nie przedstawiłem pozostałej części metod, gdyż nie mają wpływu na dalsze zachowanie. Jak już wspomniałem ma także połączenie z bazą danych. Nie napisałem jeszcze o session_handler, który tam się znajduje, jednakże on służy do zapisu danych do bazy. I tutaj pojawia się problem. Przy pojedynczym wywołaniu obiektu i operacjach na nim wszystko gra, jednakże jeżeli wywołuję obiekt w różnych klasach pojawia się problem - dane są często nadpisywane lub kasowane przez domyślne. Zastanawiam się dlaczego - operuje na danych typu static, czyli każdy obiekt powinien mieć do nich dostęp. Przez debugowanie zauważyłem że dane istnieją, jednakże pod samym końcem (wywoływanie ostatniego destruktora przez silnik PHP kasuje większość danych). Czy ktokolwiek z Was miał już podobny problem? Nadmieniam że jeżeli ustawię zapis sesji na native problem cały czas występuje. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 35 Pomógł: 5 Dołączył: 13.07.2008 Skąd: Kalisz Ostrzeżenie: (0%) ![]() ![]() |
Dzięki, poradziłem sobie w inny sposób - zrezygnowałem z destruktora, duża część osób, nawet tworzących PHP nie ma pojęcia dokładnie jak działa i dlaczego czasami inaczej.
Dodałem zdarzenie na zakończenie wykonywania skryptu, które wywołuje metodę zapisu do bazy danych, niezależnie od ilości klas. Problem ten powstawał gdy klasa tworzona była wielokrotnie w różnych klasach - destruktor nie działał wg stosu tylko hmm... dziwnie (IMG:style_emoticons/default/winksmiley.jpg) Co do tego tworzenia klasy (nie singleton) - przydaje się w różnych IDE - spróbuj utworzyć obiekt przez np ::getInstance() i potem pomoc w 'dymkach' nie pojawia się i nie przedstawia metod i wartości publicznych klasy. Poza tym zauważyłem że ten sposób używają także programiści Frameworka Kohana. No ale to już są argumenty na poziomie wyższości Bożego Narodzenia nad Wielkanocą. Dzięki za odpowiedź. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 14:25 |