Мне интересно узнать о преимуществах создания небольшой библиотеки, возможно, для личного использования, которая определяет несколько структур данных, таких как Linked Lists, Trees (Binary, AVL и т. Д.), Таблицы поиска Hash и т. П.
Некоторые из них будут построены поверх собственного PHP-массива, поскольку он действует как многие из этих типов, а некоторые потенциально не будут.
Мой вопрос действительно, имеет ли смысл строить любой из этих классов – особенно те, которые не могут основываться на собственном массиве? Я говорю здесь об вычислительной практичности и не особенно хочу вдаваться в динамический или типизированный аргумент языка (мне все еще интересно услышать что-нибудь интересное и актуальное на эту тему в стороне).
Разве это безумно строить эти (возможно, более эффективные, логически) структуры данных, используя классы, когда у нас есть реализация C базового массива?
Благодаря..
Уже есть http://php.net/manual/en/book.spl.php, который может охватывать то, что вы хотите, но если вы построите их, вам будет интересно и улучшить свои навыки программирования PHP / общего кода, тогда я думаю, что это будет очень хорошая идея.
Может также быть хорошей библиотекой, чтобы выпустить более широкую аудиторию и кое-что, чтобы надеть свое резюме.
Взгляните на SPL
http://php.net/manual/en/book.spl.php
и прочитайте « Новые возможности Split» Мэтью Турланда в PHP 5.3 для обсуждения этих структур данных.
Это поздний ответ, но это поможет кому-то искать структуры данных PHP. PHP 7 представляет расширение, называемое ds
предоставляющее специализированные структуры данных в качестве альтернативы массиву.
ds
,
Ds\
. Collection
, Sequence
и Hashable
. Vector
, Deque
, Queue
, PriorityQueue
, Map
, Set
, Stack
и Pair
. Для получения дополнительной информации ознакомьтесь с руководством, а также в этом сообщении в блоге есть некоторые потрясающие сведения, включая контрольные показатели.
Если вы смотрите на производительность, вы можете создать php-модуль (например, SPL), который дает доступ к этим структурам (поскольку они уже реализованы на C).