Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Singleton i n-razy wykonywany destruktor
Mlodycompany
post
Post #1





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


Witam. Mam pewną klasę którą wywołuje singleton'em. Singleton tworzy 1 obiekt poprawnie, konstruktor wykonuje się tylko raz, a destruktor niestety tyle razy ile pobieram instancję tej klasy. Jak pobiorę ją 3 razy to destruktor 3 razy się wykona. Wiecie może dlaczego tak jest?

PS. Jeżeli będzie potrzebny kod to zamieszczę ale wydaję mi się, że obejdzie się bez tego (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




No jedynie mi pasuje to, że gdzieś klonujesz ten sam obiekt i jest on każdorazowo zwalniany.

Które PHP? Jaki kod do singletona?
Go to the top of the page
+Quote Post
Mlodycompany
post
Post #3





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

Ostrzeżenie: (20%)
X----


  1. private static $instance = false;
  2. public static function getInstance() {
  3. if (!self::$instance) {
  4. self::$instance = new klasa();
  5. echo 'instancja';
  6. }
  7. return self::$instance;
  8. }

to jest kod. Echo w nim zawarte printuje się tylko raz czyli instancja jest tworzona raz. I jeszcze mam zabezpieczenie przed klonowaniem
  1. private function __clone(){}



Wzasadzie to już rozwiązałem ten problem w inny sposób, a mianowicie zastąpiłem destruktor zwykłą metodą i wywołałem ją na końcu kontrolera, ale nadal mnie zastanawia dlaczego tak się działo
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Mógłbyś podać minimalną ilość kodu który rekonstruuje błąd? Tak byśmy mogli to uruchomić u siebie.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 23:45