![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 1.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
A wiec tak: klasa2 i klasa3 dziedziczą po klasie1. Obie zawierają pewne zmienne statyczne, klasa1 zaś zawiera metody operujące na tych zmiennych. Tyle ze to nie dziala (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Jeszcze jedna rzecz jaka przychodzi mi do glowy to trzymanie tych zmiennych w klasie glownej w statycznej tablicy, gdzie kluczami beda nazwy klas. Chociaz to tez nie jest fajne rozwiazanie. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 91 Pomógł: 9 Dołączył: 6.03.2009 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli klasa2 dziedziczy po klasa1 a klasa1 odwołuje się do tej zmiennej, to oczywiste, że nie będzie działać bo klasa1 nie ma pojęcia o istnieniu zmiennej statycznej klasy2. Cały problem polega na hermetyzacji klas.
Spróbuj użyć implementacji klas:
wtedy powinno działać |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 7 Dołączył: 25.12.2004 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli klasa2 dziedziczy po klasa1 a klasa1 odwołuje się do tej zmiennej, to oczywiste, że nie będzie działać bo klasa1 nie ma pojęcia o istnieniu zmiennej statycznej klasy2. Cały problem polega na hermetyzacji klas. Spróbuj użyć implementacji klas:
wtedy powinno działać Mylisz tutaj dwa pojęcia: klasy abstrakcyjnej i interfejsu. Implementować można interfejs a nie klasę abstrakcyjną. @wirus15: Nie wiem po co w takim przypadku wykorzystujesz dziedziczenie, nadużywasz go. Dziedziczenie ma służyć stworzeniu hierarchi klas: od ogółu do szczegółu. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 182 Pomógł: 115 Dołączył: 4.03.2009 Skąd: Myszków Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj użyć selfa, ale wcześniej deklarując zmienną w klasie bazowej.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 1.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
@wirus15: Nie wiem po co w takim przypadku wykorzystujesz dziedziczenie, nadużywasz go. Dziedziczenie ma służyć stworzeniu hierarchi klas: od ogółu do szczegółu. Nie nie, klasy dziedziczące są rzeczywiście podklasą klasy głownej rozszerzoną o kilka specyficznych cech (m. in. zmienne statyczne). Chodzi mi o to, czy jest jakiś sposób operowania z poziomu klasy głownej na tych zmiennych bez definiowania takich samych funkcji w kazdej klasie dziedziczącej. Wyczytałem, że rzecz której potrzebuje będzie dopiero w php 5.3
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 45 Pomógł: 7 Dołączył: 25.12.2004 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Bez PHP 5.3 się chyba nie obejdzie. Gdyby to nie były zmienne statyczne nie byłoby problemu, a tak to niestety w obecnej wersji PHP jest to niemożliwe. Jeśli już PHP 5.3 to wykorzystałbym: Late Static Binding.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 21:59 |