PHP YAML Parsers

Кто-нибудь знает хороший YAML Parser для PHP? Если да, то какие плюсы и минусы этой библиотеки?

Ответ 1

Последнее обновление: 26 июля 2017 года

Здесь приведено резюме состояния YAML в PHP:

  • Обертки для библиотек C: вы, вероятно, захотите их, если вам нужна максимальная скорость:
    • php-yaml: Обертка для LibYAML, Доступно как расширение PECL; он также находится на документах по PHP.
    • syck: привязка к syck; также доступен как расширение PECL. (датировано, см. ниже)

  • Чистые реализации PHP:

    • sfYaml: компонент Symfony YAML. Здесь вы можете увидеть мотивацию авторов здесь. Он хотел, чтобы что-то было "простым в использовании, быстрым, проверенным модулем и имело четкие сообщения об ошибках".
    • spyc: парсер YAML без зависимостей

На момент написания этой статьи последние версии выпускают даты для вышеупомянутых библиотек и версии спецификация YAML (1.2 - последняя версия версия), которые они поддерживают:

php-yaml   1.3.0     2016-09-24     YAML 1.1  [PHP 5]
php-yaml   2.0.0     2016-09-24     YAML 1.1  [PHP 7]
syck       0.9.3     2008-11-18     YAML 1.0
sfYaml     3.3.5     2017-06-15     YAML 1.1, most of 1.2
spyc       0.6.2     2017-02-24     YAML 1.1 

Ответ 2

Spyc: https://github.com/mustangostang/spyc

Чистая реализация PHP, поэтому вам не нужно вносить какие-либо изменения в сервер для установки. Если скорость вызывает серьезную озабоченность, это может быть не идеальное решение, но если вы используете YAML для конфигурации или относительно малообъемного использования, это фантастическое решение.

Учитывая документ YAML, Spyc вернет массив, который вы можете использовать, но вы сочтете нужным.

require_once "spyc.php";
$data = Spyc::YAMLLoad($myfile);

Учитывая массив, Spyc вернет строку, содержащую документ YAML, построенный из ваших данных.

$yaml_str = Spyc::YAMLDump($myarray);

Ответ 4

Symfony2 имеет компонент YAML, который поддерживает большую часть спецификации YAML 1.2

https://github.com/symfony/Yaml

Ответ 6

Если вы используете много YAML в своем проекте, вы можете обнаружить, что чистые библиотеки PHP, такие как spyc или Symfony YAML, недостаточно быстры. Для C YAML-парсеров существует не менее двух привязок PHP:

  • yaml - обертка для библиотеки парсер LibYAML YAML 1.1
  • syck - обертка для библиотеки анализатора Syck YAML 1.0

Ответ 7

Если вам нужно быстро протестировать YAML, я построил: http://yaml-online-parser.appspot.com/. Это помогает мне писать YAML, особенно когда вы просто учитесь.

Ответ 8

Попробуйте sfYaml, это лучшее, что я знаю.

Symfony и Doctrine ORM используют этот.

Чтобы получить его, вы можете загрузить Doctrine 1.2 и извлечь sfYaml из vendor.

Сообщите нам, подходит ли оно вашим потребностям.