I'm trying to design a PHP object (call it Incident_Collection
) that will hold a collection of other objects each of which implement an Incident
interface.
incident_date;
}
}
?>
At first I figured I'd just make my Incident_Collection
implement IteratorAggregate
and store the Incident objects in an array property of the collection:
collection);
}
public function sort(){
//sort by $incident->when() values in $this->collection
}
/*also __get($var), __set($var,$value), add(Incident $object), remove(Incident $object) and other functions*/
}
?>
But because Incident
objects have a natural order, I thought perhaps extending one of the SPL Data Structures might be more appropriate/efficient. But which one? I'm not very clear about when to use a particular data structure.
Another wrinkle is that there may be restrictions on an Incident_Collection
. For example, if there were a Person
object who had an Incident_Collection
, perhaps the following restrictions might apply:
Birth
incidentBirth
exists, it must be the earliest incident in the collectionDeath
incidentDeath
exists, it must be the last incident in the collectionHS_Graduation
must come after HS_Begin
Would it be better to have a generic Incident_Collection
that accepts a set of restrictions from its owner (e.g. Person
), or a subclassed Person_Incident_Collection
?