Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Singleton i dziedziczenie
joohn
post
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:

  1. <?php
  2. class BaseSession
  3.  {
  4. protected static $instance = null;
  5.  
  6. //deny cloning of object
  7. private function __clone(){}
  8. private function __construct(){}
  9.  
  10. /**
  11.  * @return UserSession Session object
  12.  */
  13. public function getInstance()
  14. {
  15. return ($i = &self::$instance) ? $i : $i = new self;
  16. }
  17. }
  18. ?>


Klasa dziedzicząca, implementująca już konkretną funkcjonalność dla danej aplikacji:

  1. <?php
  2. class DerivedSession extends BaseSession
  3. {
  4.  
  5. //jakies funkcje...
  6. }
  7. ?>


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/
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 07:26