![]() |
![]() |
![]()
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%) ![]() ![]() |
No oczywiście, że jest taki sposób. Przykład:
Po prostu źle się do tego zabrałeś. Mam nadzieję, że powyższy przykład jest zrozumiały. EDIT: Był mały błąd w linii 10. Skopiowałem zmienną $name tak, jak była czyli w cudzysłowach, które były zbędne. Teraz jest dobrze. Ehh... Chyba źle Cię zrozumiałem. Zmęczenie. Przepraszam. Ten post edytował mortus 27.04.2010, 19:52:43 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 27.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Rzeczywiście źle mnie zrozumiałeś. Otrzymałem już odpowiedź na innym forum. Odpowiedź na mój problem to arrayaccess. Działa minimalnie inaczej niż zakładałem ale dla mnie sprawdzi sie równie znakomicie. Dziękuje za zainteresowanie tematem!
|
|
|
![]()
Post
#4
|
|
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: 3.10.2025 - 03:07 |