As listed above, a set can only have one copy of a value. Let's take the same example from above.
<?php $fan4 = Xyster_Collection::using(array('mr. fantastic', 'invisible woman', 'human torch', 'thing')); $heroes = new Xyster_Collection_Set(); $heroes->add( 'superman' ); // set now contains 'superman' $heroes->add( 'batman' ); // set now contains 'superman', 'batman' $heroes->addAll( $fan4 ); // set now contains 'superman', 'batman', 'mr. fantastic', 'invisible woman', 'human torch', 'thing' $heroes->addAll( $fan4 ); // does nothing – the set already has the fantastic 4
The sortable set allows for any class implementing Xyster_Collection_Comparator_Interface
to reorder the collection contents. The class must implement one method, compare
, which
accepts two items. The method should return -1 if the first is less than the second, 0
if they are equal, or 1 if the second is greater than the first (see PHP's strcmp
for
an example). An instance of this class can be passed into the sort method of a
sortable set.
<?php class CaseInsensitiveComparator implements Xyster_Collection_Comparator_Interface { public function compare( $a, $b ) { return strcmp($a, $b); } } $people = array('Frank Castle','Clark Kent','Felicia Hardy','Selina Kyle'); $set = new Xyster_Collection_Set_Sortable(); foreach( $people as $person ) { $set->add($person); } $set->sort(new CaseInsensitiveComparator()); // $set's items are now ordered 'Clark Kent, 'Felicia Hardy', 'Frank Castle', 'Selina Kyle'