![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 106 Pomógł: 0 Dołączył: 9.09.2003 Skąd: Włocławek Ostrzeżenie: (0%) ![]() ![]() |
Chciałem dziś zrobić licznik obiektów pewnej klasy.
Zrobiłem wię klasę:
Efekt był taki że pierwszy obiekt nadal widział jeden obiekt, drugi dwa. Rozumiem, że są to dwa odrębne obiekty i że podczas tworzenia drugiego z nich istniejąca wartość static ($licznik) została użyta do inicjalizacji zmiennej $licznik w obiekcie $drugi jednak czy dałoby się zrobić jakiś licznik "globalny", który działałby "wstecz" ? -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Uzyj statycznej zmiennek klasy:
static private $licznik; -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 106 Pomógł: 0 Dołączył: 9.09.2003 Skąd: Włocławek Ostrzeżenie: (0%) ![]() ![]() |
Ojej. Tam w kodzie jest błąd, bo tam jest static. Już tak zrobiłem. Tylko, że static nie działa "wstecz". Zadziała dla nowego obiektu, ale nie zmieni stanu licznika poprzedniego. Wiem, że można próbować odwoływać się do zmiennej globalnej, ale to znowu powoduje krytyczny wzrost sprzężeń w kodzie. Chciałoby sie zrobić zmienną referencyjną, ale php Ci na to nie pozwala, a przekazywanie referencji do konstruktora też lipa, bo clone nie może wywołać konstruktora z referencją.
Ten post edytował JohnySpot 23.06.2006, 18:50:46 -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Cos bredzisz, wrzuc lepiej swoj kod (copy/paste, a nie przepisuj go).
Patrz na to:
Wynik: Kod Counter = 1<br />
Counter = 2<br /> Counter = 3<br /> Cloning<br /> Counter = 4<br /> Counter = 4<br /> -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 106 Pomógł: 0 Dołączył: 9.09.2003 Skąd: Włocławek Ostrzeżenie: (0%) ![]() ![]() |
Może ja coś skopałem :/ u mnie nie działało... chyba
![]() -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 16:14 |