Я работаю над кодом для управления коллекцией уникальных объектов. Первый прототип этого кода использует ассоциативный массив, в основном так, как я всегда это делал.
Тем не менее, я также заинтересован в использовании функциональных возможностей, которые были добавлены в более современные версии PHP, такие как SplObjectStorage, для этого, частично, как опыт обучения, отчасти потому, что он должен предлагать преимущества (тесты, которые я имею что SplObjectStorage может быть быстрее, чем массивы во многих случаях).
Текущая реализация имеет ассоциативный массив, который я проверяю с помощью in_array, чтобы увидеть, находится ли объект уже в массиве, перед добавлением к нему нового объекта.
Большая проблема, которую я вижу с помощью SplObjectStorage, заключается в том, что на первый взгляд не кажется, что поддерживает поведение ассоциативного массива key/value и может рассматриваться только как индексированный массив. Однако документация для новых функций PHP не соответствует стандартам документации более установленных частей языка, и я могу просто что-то упустить.
Можно ли использовать SplObjectStorage вместо ассоциативного массива? Если да, как определить ключ при добавлении нового объекта? Что еще более важно, каковы относительные преимущества и недостатки SplObjectStorage по сравнению с ассоциативными массивами?