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