PHP YAML парсеры
Кто-нибудь знает хороший парсер YAML для PHP? Если да, каковы плюсы и минусы этой библиотеки?
8 ответов
Последнее обновление: 26 июля 2017 г.
Вот краткая информация о состоянии YAML в PHP:
- Оболочки для библиотек C: Вы, вероятно, захотите их, если вам нужна высокая скорость:
Чистые реализации PHP:
На момент написания этой статьи даты выпуска последних версий для вышеупомянутых библиотек и версии спецификации 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
Я бы предложил процесс, описанный в этой статье http://devzone.zend.com/article/2585-using-yaml-with-php-and-pecl
Если вы используете много YAML в своем проекте, вы можете обнаружить, что чистые библиотеки PHP, такие как spyc или Symfony YAML, недостаточно быстрые. Есть как минимум две привязки PHP для синтаксических анализаторов C YAML:
Попробуйте sfYaml, это лучшее, что я знаю.
Symfony и Doctrine ORM используют этот.
Чтобы получить его, вы можете скачать Doctrine 1.2 и извлечь sfYaml
от vendor
каталог.
Дайте нам знать, если это соответствует вашим потребностям.
Если вам нужно быстро протестировать YAML, я создал: http://yaml-online-parser.appspot.com/. Это помогает мне писать YAML, особенно когда я только учусь.