Działania na tablicy z wykorzystaniem ArrayObject

 lut, 07 - 2016   PHP

php-arrayTablice są jednym z podstawowych elementów programowania, bez których ciężko sobie wyobrazić pisanie jakiejkolwiek aplikacji. Pracując z tablicami w PHP można korzystać z podstawowych funkcji języka lub wykorzystać podejście obiektowe przy pomocy klasy ArrayObject.

 

 

 

Tablica jest to uporządkowany zbiór zmiennych w postaci klucz – wartość. Tablice w PHP tworzymy za pomocą wyrażenia array(), do którego przypisujemy kolejno klucze i wartości (lub same wartości – wtedy klucze ustawią się same).

Klasa ArrayObject wprowadzona została w wersji PHP 5 i stanowi swego rodzaju opakowanie dla zwykłej tablicy oraz pozwala na jej wykorzystanie w stylu obiektowym. Wystarczy jedynie przekazać konstruktorowi obsługiwaną tablicę.

Utworzony obiekt posiada szereg metod, pozwalających na wykonywanie działań na przekazanej tablicy. Ponadto możemy nadpisać klasę, zmieniając lub dopisując do niej nowe funkcjonalności.

  • offsetExists($key) – określa czy istnieje element tablicy przypisany do wskazanego klucza
  • offsetGet($key) – zwraca element tablicy
  • offsetSet($key, $value) – dodaje element do tablicy
  • offsetUnset($key) – usuwa element tablicy
  • append($value) – pozwala na dodanie elementu, który zostanie umieszcony na końcu tablicy

 

 

Iteracja

Jednym z podstawowych działań programisty na tablicy jest iteracja, tzn. kolejne przechodzenie po elementach i wykonywanie na nich operacji (np. odpowiednie sformatowanie pozycji w tablicy oraz wyświetlenie go użytkownikowi). DO tego celu można użyć obiektu Iteratora.

Metoda getIterator() tworzy i zwraca objekt Iterator, co pozwala na przechodzenie po elementach tablicy z wykorzystaniem metod tego obiektu.

  • valid() – sprawdza czy itsnieje element tablicy, na który wskazuje wskaźnik iteratora
  • key() – zwraca klucz elementu tablicy
  • current() – zwraca wartość elementu tablicy
  • next() – przesuwa wskaźnik iteratora na kolejny element tablicy

 

Rozszerzenie funkcjonalności

Klase ArrayObject możemy dowolnie rozszerzać, dodając nowe funkcjonalności. Poniższy przykład modyfikuje funkcję getOffset, doklejając do każdego zwracanego elementu tablicy, ciąg znaków przed i po. Ponadto dodaje magiczne funkcje __get oraz __set, pozwalające na pobieranie i dodawanie pozycji tablicy w pełni obiektowy sposób.

Wykorzystując rozszerzoną funkcjonalność:

 

Podsumowanie

Korzystanie dobrodziejstw obiektowości podczas prac z tablicami, jest niezwykle wygodne oraz zwiększa czytelność tworzonego kodu. Ponadto pozwala w dowolny sposób rozszerzać oraz modyfikować sposób działania wykorzystywanych klas. Same plusy, dlatego zachęcam do korzystania :).


Przeczytaj równierz