All Xyster_Collection_Interface-based objects are traversable – they can be iterated through.
<?php // if $stuff implements Xyster_Collection_Interface foreach( $stuff as $k=>$v ) { printf( 'key: %s, value: %s', $k, $v ); }
Here are some other useful methods on Xyster_Collection_Interface:
<?php // if $stuff implements Xyster_Collection_Interface echo count($stuff); if ( $stuff->isEmpty() ) { echo 'Empty collection'; } if ( $stuff->contains('some value') ) { echo 'Yes, it's in there\n'; } if ( $stuff->containsAll( array('value1', 'value2', 'value3') ) ) { echo 'They're all there'; }
This collection can be added to, changed, or have items removed.
<?php // if $items is an Xyster_Collection_Interface // let's say $items contains the values 'earth', 'mars', and 'jupiter' $innerPlanets = Xyster_Collection::using(array('mercury', 'venus', 'earth', 'mars')); $items->merge($innerPlanets); // $items now contains 'mercury', 'venus', 'earth', 'mars', 'jupiter' $items->remove('mars'); // $items now contains 'mercury', 'venus', 'earth', 'jupiter' $items->remove('saturn'); // throws an exception – 'saturn' isn't in the collection $items->removeAll(Xyster_Collection::using(array('mercury', 'venus'))); // $items now contains 'earth', 'jupiter' // the items supplied to removeAll must all be in the collection $items->retainAll(Xyster_Collection::using(array('earth'))); // $items now contains 'earth' // the items supplied to retainAll must all be in the collection $items->clear(); // $items now contains nothing