Проблема реализации 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");

Ответы (0 шт):