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