Структуры данных PHP (Java-подобные) - PullRequest
4 голосов
/ 09 марта 2011

Я задаюсь вопросом о преимуществах создания небольшой библиотеки, возможно, для личного использования, которая задает несколько структур данных, таких как связанные списки, деревья (двоичные, AVL и т. Д.), Таблицы поиска хэшей и т. П. .

Некоторые из них будут построены поверх собственного массива PHP, так как он действует как многие из этих типов, а некоторые потенциально не будут.

Мой вопрос действительно, имеет ли смысл создавать какие-либо из этих классов, особенно те, которые могут не опираться на собственный массив? Я говорю здесь о вычислительной практичности и особенно не хочу вдаваться в аргументы динамического и типизированного языка (мне все еще интересно услышать что-нибудь интересное и актуальное по этой теме в стороне).

Безумно ли строить эти (возможно, более эффективные, логически) структуры данных, используя классы, когда у нас есть реализация C базового массива на C?

спасибо ..

Ответы [ 4 ]

2 голосов
/ 09 марта 2011

Взгляните на SPL

http://php.net/manual/en/book.spl.php

и прочитайте Новые функции Spl в Мэтью Турланда в PHP 5.3 для обсуждения этих структур данных.

1 голос
/ 18 сентября 2016

Это поздний ответ, но это поможет кому-то искать структуры данных PHP. PHP 7 представляет расширение под названием ds, предоставляющее специализированные структуры данных в качестве альтернативы массиву.

ds,

  • использует пространство имен Ds\.
  • имеет 3 интерфейса, а именно Collection, Sequence и Hashable.
  • имеет 8 классов, а именно Vector, Deque, Queue, PriorityQueue, Map, Set, Stack и Pair.

Для получения дополнительной информации ознакомьтесь с Руководством , а также . В этом блоге содержится некоторая удивительная информация, включая тесты.

1 голос
/ 09 марта 2011

Уже есть http://php.net/manual/en/book.spl.php, который может охватывать то, что вы хотите, но если создание этого будет интересным для вас и улучшит ваши навыки PHP / общего программирования, то я думаю, что это будет очень хорошая идея.

Может также быть хорошей библиотекой, которую можно выпустить для более широкой аудитории, и кое-что добавить в свое резюме.

0 голосов
/ 09 марта 2011

Если вы смотрите на производительность, вы можете создать модуль php (например, SPL), который предоставляет доступ к этим структурам (так как они уже реализованы в C).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...