Проблема реализации PHP класса с определенными методами
Всем доброго дня, я новичок в ООП и пытаюсь написать PHP класс представляющий коллекцию данных который будет содержать методы: add, remove, getHash, current, getObjectList, check, removeAll. За пример я взял: https://www.php.net/manual/ru/class.splobjectstorage.php. Моя проблема заключается в том что просто пытаюсь понять как такой класс должен выглядеть так как к примеру одно дело описывать человеческую сущность и там я понимаю что можно применить насследование, интерфейс, абстрактный класс, а здесь то ли надо просто описать что каждый метод выполняет. Очень буду благодарен за любой совет и мнение.
Код:
class CollectionOfData{
private $items = array();
public function add($key, $data = null) {
if ( $data == null ) {
$this->items[] = $key;
} else {
if ( isset( $this->items[ $data ] ) ) {
throw new KeyHasUseException( "Key $data already in use." );
} else {
$this->items[ $data ] = $key;
}
}
}
public function remove($key){
if (isset($this->items[$key])) {
unset($this->items[$key]);
}
else {
throw new KeyInvalidException("Invalid key $key.");
}
}
public function getHash($object){
if (isset($this->items[$object])) {
return $this->items[$object];
}
else {
throw new KeyInvalidException("Invalid key $object.");
}
}
public function current() {
// TODO: Implement current() method.
}
public function getObjectList(){
}
public function check($object){
}
public function removeAll($collection){
}
}
class Data
{
private $name;
private $age;
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
}
public function __toString() {
return $this->name . " and $this->age years old ";
}
}
$certainData = new CollectionOfData();
$certainData->add(new Data("Alex", 26), "alex");
$certainData->add(new Data("Dimon", 35), "dimon");
$certainData->add(new Data("Anastasia", 22), "Anastasia");
$certainData->remove("alex");
$certainData->getHash("alex");