![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 27.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam!
Taki oto kod: Kod <? zwraca takie coś:class myClass { public function __set($name, $value) { echo '$name'; } public function __get($name) { echo '$name'; } } $klasa = new myClass; $klasa->tablica[0] = 0; echo "\n"; $zmienna = $klasa->tablica["klucz"]; ?> Kod tablica Jak widać zdeklarowałem klase z magicznymi metodami __set i __get a następnie próbuje zapisać i pobrać pewne wartości do i z tablic. Niestety funkcje te zwracają tylko informcje o nazwie tej tablicy i ani słowa o ewentualnym indeksie (tak jak by była to zwykła zmienna, skalar). Czy jest jakiś sposób aby mimo wszystko za pomocą tych metod obsłużyć tablice tak abym mógł w ramach klasy dynamicznie je tworzyć i zmieniać podobnie jak ma to miejsce przy zabawie ze zmiennymi?tablica Z góry dziękuje za pomoc! |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Jednakże istnieje rozwiązanie Twojego problemu. Potrzeba, aby magiczna metoda __get zwracała referencję do naszego obiektu, jak poniżej:
Chodzi o to, że w PHP począwszy od wersji 5.2.0 metoda __get zwraca kopię obiektu, a nie jak to było we wcześniejszych wersjach referencję do tego obiektu. Dlaczego tak jest? Nie wiem. Niemniej powoduje to brak dostępu do konkretnego elementu tablicy, choć nie do samej tablicy. Ten post edytował mortus 27.04.2010, 20:38:08 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 20:47 |