Post
#1
|
|
|
Grupa: Przyjaciele php.pl Postów: 1 202 Pomógł: 117 Dołączył: 13.04.2007 Skąd: 127.0.0.1 Ostrzeżenie: (0%)
|
Mam taki oto kod:
Tworzę nową instancję tej klasy, co automatycznie uruchamia sesje. Problem jest z metodami _session_write_method i _session_close_method. Mianowicie gdy PHP chce się do nich odwołać wywala błąd: Call to private method.... Może mi ktoś wytłumaczyć czemu tak się dzieje? Przecież w handlerze sessji jest referencja do obiektu więc czemu nie może korzystać z prywatnych metod? Dodam jeszcze, że pozostałe metody działają bez zarzutu! W manualu jest wzmianka, że sesja jest zamykana/zapisywana już po zlikwidowaniu obiektów. Problem rozwiązuje dodanie session_write_close(); do destructora. To też jest dla mnie nie jasne. Skoro obiekt już nie istnieje to jak sesja wywołuje te metody jeśli są nawet publiczne? (jeżeli metody są publiczne wszytsko działa bez zarzutu!). Ten post edytował harold1982 21.11.2007, 12:23:35 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%)
|
Są wywoływane na instancji a nie wewnątrz instancji. Do session_save_handlera przekazujesz informację obiekt + metoda. Konstrukcja array($this, '_session_open_method') to w PHP tak zwany callback i jest on później wywoływany z zewnątrz, ponieważ mechanizm obsługujący sesje nie jest uruchamiany wewnątrz instancji UserSession.
Przykładowy kod, który obrazuje to zachowanie:
Komunikat, którym skrypt kończy działanie to: Warning: call_user_func(CallbackTest::dontCallMe) [function.call-user-func]: First argument is expected to be a valid callback in callback.php on line 22 |
|
|
|
harold1982 klasa Session 21.11.2007, 12:20:21
splatch Private - do użytku tylko poprzez instancje d... 21.11.2007, 12:25:33
harold1982 No ale przecież te metody są wywolywane ... 21.11.2007, 12:54:14
harold1982 Dzięki za szybkie odpowiedzi. Dalej nie rozum... 21.11.2007, 13:03:27 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 13:20 |