2010-11-01 15 views
11

Zacząłem uczyć się PHP SPL od ArrayIterators i chciałbym wiedzieć jakie są zalety używania SPL ArrayObject, ArrayIterator, RecursiveArrayIterator zamiast zwykłych tablic?Jakie są zalety korzystania z SPL ArrayObject, ArrayIterator, RecursiveArrayIterator zamiast zwykłych tablic?

a) Słyszałem, że pętle wykorzystujące iteratory SPL zmniejszą użycie pamięci (ale dlaczego?). Naprawdę nie wiem w to wierzyć lub nie, ponieważ nie rozumiem, w jaki sposób można zmniejszyć zużycie pamięci.

b) Mówiąc o RecursiveArrayIterator możemy powiedzieć, że czasami można zapisać kilka linii kodu (używamy jednej konstrukcji foreach zamiast 2+ (zależy od wymiaru tablicy)).

Prawdopodobnie moje pytania mogą wydawać się bardzo łatwe dla kogoś, ale jest zbyt mało informacji/dokumentacji dotyczącej SPL.

Dziękuję

+0

Czy moja odpowiedź była wystarczająca? –

+0

Powiązane: [SPL vs. Array: Kiedy powinniśmy używać SPL i kiedy powinniśmy używać Array w PHP?] (Http://stackoverflow.com/questions/3166405/php-spl-vs-array-when-should-we -use-spl-and-when-we-should-use-array-in-php5) (Lip 2010) – hakre

Odpowiedz

8

Podstawową zaletą patrzysz sprawnego dostępu do danych głównie w zakresie czytelności. W ten sposób możesz używać obiektu tak jak tablicę w foreach, co zapewnia bliższą interakcję z PHP.

a) Sposób zmniejszenia zużycia pamięci polega na tym, że nie tworzy się kopii tablicy, ale jeśli zostanie wykonana poprawnie w silniku, powinna być nową referencją do czasu modyfikacji tablicy, a następnie jej skopiowania.

b) Zasadniczo

Dobrym tego przykładem byłoby rozszerzenie SimpleXML. Obiekt PHP/XML, z którym wchodzisz w interakcje, działa również jak tablica, która sprawia, że ​​jest efektywny w użyciu, ponieważ możesz po prostu wymyślić lub uzyskać dostęp do jednego z elementów na liście. Nie musisz pobierać tablicy z obiektu, a następnie iterować i robić z nią czegoś innego, jeśli chcesz mieć nazwę tagu lub atrybut.

Powiązane problemy