PHP – Biblioteka SPL – Klasa SplObjectStorage

Wprowadzenie w świat biblioteki standardowej PHP - SPL (Standard PHP Library). Omówienie klasy SplObjectStorage.

0
147
views

Klasa SplObjectStorage dostarcza dwa rozwiązania:

Zarządzanie obiektami, zapewniając ich unikalność w obrębie instancji.

Dodanie tej samej instancji obiektu nie powoduje jej duplikacji w storage. Jedna instancja obiektu = maksymalnie jedna instancja w storage. SplObjectStorage to kolejka czyli bufor typu FIFO (First In, First Out).

Mapowanie obiekt => dane.

Ciekawsze według mnie zastosowanie, umożliwiające identyfikację jakiś danych za pomocą obiektów. Instancja obiektu staje się kluczem dostępowym do danych.

Istnieje również alternatywny sposób wiązania obiektu z danymi. Klasa implementuje interfejs ArrayAccess, a dzięki temu, do obiektu storage można odwoływać się tak samo jak do normalnej tablicy:

Podstawowe operacje

SplObjectStorage udostępnia dość rozbudowane API (21 metod publicznych). Postaram się zaprezentować jedynie wybrane z nich. Poniżej znajduje się kontekst wszystkich opisanych przykładów.

Dodaj obiekt do storage

Usuń obiekt z storage

Zwróć ilość obiektów w storage

Dodaj wszystkie obiekty z innej instancji SplObjectStorage

Iterowanie po dodanych obiektach

Sprawdź czy w storage istnieje konkretny obiekt

Serializacja

Deserializacja

Wynikiem będzie storage z 3 obiektami posiadającymi następujące właściwości name: Object – 1; Object – 2; Object – 3.

Przykład użycia

Wiesz już co oferuje klasa SplObjectStorage, jednak rodzi się pytanie – gdzie można ją realnie zastosować? Ja użyłem jej przy okazji implementacji wzorca Observer. Wykorzystując przy tym dwie inne klasy wchodzące w skład biblioteki SPLSplObserver oraz SplSubject. Kod źródłowy tego przykładu dostępny jest na moim profilu GitHub.