[PHP]Obsłga tablic za pomocą magicznych metod klas

0

Witam!
Taki oto kod:

<?
 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"];
?>

zwraca takie coś:tablcode>zwraca takie coś:`tablica
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?
Z góry dziękuje za pomoc!
0

nie za bardzo cię rozumiem, ale prawdopodobnie chodzi o to __get musiałoby zwracać instancję klasy też z magicznymi metodami __get, która by już służyła za indexer

0

musisz zwrócić obiekt implementujacy ArrayAccess czy cos takiego.

0

@pozdro600:
Nie do końca rozumiem co oznacza, że __get służy za indexer. Czy możesz pokazać przykładowy kod?
Chodzi mi o coś takiego:

$obj->NieIstniejącaTablica["PewienIndex"] = 1;

po wywołaniu takiego kodu w __set chce zapisać informacje o tym, że do NieIstniejącaTablica z indexem PewienIndex zostaje zapisana wartość 1. Niestety jedyne co moge sczytać w __set to nazwa zmiennej ale index ginie bez śladu. Podobnie w __get chce pobrać wartość z jakieś (statycznie nie zdeklarowanej) tablicy ale nie całą tablice tylko pewną komórkę, która jest przekazywana właśnie jako index podczas odwoływania sie do obiektu klasy.
@nav:
To właśnie o to chodziło! Dziękuje serdecznie!

1 użytkowników online, w tym zalogowanych: 0, gości: 1