Ассоциативный массив по сравнению с SplObjectStorage

Я работаю над кодом для управления коллекцией уникальных объектов.Первый прототип этого кода использует ассоциативный массив, как я всегда это делал.

Тем не менее, я также стремлюсь воспользоваться функциональными возможностями, которые были добавлены в более современные версии PHP, такие как SplObjectStorage, для этого вместо этого, отчасти в качестве учебного опыта, отчасти потому, что это обязательно даст преимущества (тесты я видно, что SplObjectStorage может быть быстрее массивов во многих случаях).

Текущая реализация имеет ассоциативный массив, который я проверяю с помощью in_array, чтобы увидеть, есть ли объект уже в массиве, прежде чем добавлять к нему новый объект.

Большая проблема, которую я вижу с SplObjectStorage, заключается в том, что он, на первый взгляд, не поддерживает поведение ассоциативного массива ключ / значение и может рассматриваться только как индексированный массив. Однако документация по новым функциям PHP не соответствует стандартам документации более устоявшихся частей языка, и я могу просто чего-то упустить.

Могу ли я использовать SplObjectStorage вместо ассоциативного массива? Если да, то как мне определить ключ при добавлении нового объекта? Что еще более важно, каковы относительные преимущества и недостатки SplObjectStorage по сравнению с ассоциативными массивами?

29
задан GordonM 15 December 2011 в 12:38
поделиться