PHP YAML парсеры

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

8 ответов

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

Вот краткая информация о состоянии YAML в PHP:

  • Оболочки для библиотек C: Вы, вероятно, захотите их, если вам нужна высокая скорость:
  • Чистые реализации PHP:

    • sfYaml: YAML-компонент Symfony. Вы можете увидеть мотивы его авторов здесь. Он хотел что-то " простое в использовании, быстрое, модульное тестирование и с четкими сообщениями об ошибках ".
    • 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 

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);

Среда Symfony очень интенсивно использует YAML, этот пост в блоге Грегуара Юбера демонстрирует использование их библиотеки YAML в проекте, не связанном с Symfony.

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

https://github.com/symfony/Yaml

Я бы предложил процесс, описанный в этой статье http://devzone.zend.com/article/2585-using-yaml-with-php-and-pecl

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

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

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

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

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

Дайте нам знать, если это соответствует вашим потребностям.

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

Другие вопросы по тегам