![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 10.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam taki prosty problem:
Bazowa klasa sesji mojego frameworka:
Klasa dziedzicząca, implementująca już konkretną funkcjonalność dla danej aplikacji:
Problem polega na tym, ze w entry-poincie mojej aplikacji robie tak, zeby singleton zainicjalizowal sie tym dziedziczonym obiektem: $tmp = DerivedSession::getInstance(); Mimo tego tworzy mi sie obiekt typu BaseSession! Jeżeli w klasie DerivedSession skopiuje metodę getInstance z definicją taką jaka jest w BaseSession, wszystko działa zgodnie z oczekiwaniami, czyli powyższy kod tworzy obiekt klasy DerivedSession. Czy w takim razie to jest normalne zachowanie dla OOP w PHP, jeżeli wywołuje funkcje statyczną w kontekscie klasy dziedziczącej (bez przeciążania tej funkcji), to "self" w dalszym ciągu odnosi się do klasy bazowej? Pozdrawiam Adam
Powód edycji: Zmiana kolorowania /~strife/
|
|
|
![]()
Post
#2
|
|
![]() 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%) ![]() ![]() |
Ja dołączam się do pytania i jeszcze proszę o wyjaśnienie jednej kwestii. Mianowicie w PHP metody prywatne nie są dziedziczone więc dlaczego działa konstruktor w tym przykładzie?
EDIT: już wiem ![]() Ten post edytował ayeo 17.12.2007, 00:41:08 -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 10.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dokładnie tak.
Jeżeli przeciąże metodę getInstance w klasie dziedziczącej (z implementacją jak w bazowej) kod działa! Na początku myślałem, że tworzy się domyślny konstruktor publiczny, ale nie... gdy wywołam: CODE $tmp = new DerivedSession() PHP zgłasza błąd: Fatal error: Call to private BaseSession::__construct() from context '' |
|
|
![]()
Post
#4
|
|
![]() 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%) ![]() ![]() |
No i wszystko jasne! To jest błąd PHP! Tutaj link:
http://www.mail-archive.com/php-bugs@lists...t/msg85053.html Pozdrawiam! -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Zapraszam do noty na blogu udata.
-------------------- Łukasz Dywicki
Independent Java and open source software consultant. Blog - Java, OSGi, integracja oprogramowania.. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 9 Pomógł: 0 Dołączył: 10.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Teraz to już rzeczywiście wszystko jasne
![]() Dzięki chłopaki, rozwialiście moje wątpliwości. Czyli pozostaje czekać na nowego PHP a póki co się zrobi work-around. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 13:12 |