![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 24.01.2003 Skąd: POland Ostrzeżenie: (0%) ![]() ![]() |
Witam,
posiadam 3 klasy:
czy ktoś może wie gdzie jest błąd i jak to naprawić? ogólny pomysł był taki, żeby zmienne z klasy MainData były dostępne w innych klasach, ale żeby klasa MainData była singletonem, czyli, żeby zmienne nie były dublowane, a zmiana zmiennej klasie dziedziczącej powodowała zmianę w klasie MainData za pośrednictwem referencji w klasie MainSingletonReference, niestety tak się nie dzieje i zmienne z klasy MainData nie są zmieniane... testowałem to pod php 4.4.0 i Win2k ktoś ma jakieś pomysły? z góry dzięki... -------------------- Human Knowledge Belongs To The World !!!
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
php pro -> php
-------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Ale nigdzie nie ustawiasz wartosci _db, wiec wyswietla ci NULLa (daj var_dump zamiast echo; //class pointers var $_db = null;) Sprawdzane na php 5.0/win -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 24.01.2003 Skąd: POland Ostrzeżenie: (0%) ![]() ![]() |
no ok, faktycznie var_dump daje NULL'a, ale nie zgodze się, że zmienna _db z klasy MainData nie jest ustawiana...
otóż w funkcji MainSingletonReference() tworzona jest referencjia do odpowiadającej zmiennej z klasy MainData
można prosić o sprostowanie gdzie tutaj jest błąd, wygląda na to, że nie działa przesyłanie przez referencjię w klasie MainSingletonReference ... nie jestem pewien ale chyba ustawienie $this->_db w klasie Main nadpisuje referencję... może lepszym rozwiązaniem było by zaimplementowanie destruktora za pomocą register_shutdown_function() i tam dopiero zmienić wartości zmiennych klasy MainData odpowiednio je nadpisując zmiennymi z klasy dziediczącej... co o tym sądzicie? czy się myle? czy jednak da się to zrobić za pomocą konstruktora? jeśli tak, to gdzie czai się ten błąd? ![]() ![]() ![]() -------------------- Human Knowledge Belongs To The World !!!
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
-------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 18 Pomógł: 0 Dołączył: 24.01.2003 Skąd: POland Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam byka: 1.
powinno być
2.
powinno być:
[bez referencji przy przypisywaniu $db] no i właśnie może ktoś mi powie, dlaczego tak się dzieje? dlaczego nie moge tak przypisać tutaj tej zmiennej.... potrzebuje takie rozwiązanie, ponieważ zmienne z klasy MainData mają przechowywać pointery do klas z singletonem, i tu przypisanie przez referencję jest niezbędne.... Jak to obejść? ![]() Z góry dzięki za pomoc! -------------------- Human Knowledge Belongs To The World !!!
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 14:41 |