![]() |
![]() |
![]()
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... |
|
|
![]() |
![]()
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
|
|
|
![]()
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 |
|
|
![]()
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?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ? |
|
|
![]()
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%) ![]() ![]() |
|
|
|
![]()
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ść?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Z góry dzięki za pomoc! |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 04:00 |