PHP YAML парсери [закрито]


105

Хтось знає про хороший парсер YAML для PHP? Якщо так, то які плюси і мінуси цієї бібліотеки?


спробуйте "spyc" lib spyc.sourceforge.net
Shreef

16
+1, хоча і неконструктивна, ця сторінка була мені надзвичайно корисною
Ерік Робертсон

2
враховуючи якість відповіді на це питання з найбільш високою оцінкою, дивно, що це питання було закрито як "неконструктивне".
dreftymac

Я тільки що випустив свій парсер BabyYaml, який є більш простий кузен YAML, якщо ви зацікавлені перевірити його тут: github.com/lingtalfi/BabyYaml
лин

Я маю згоду з Еріком Робертсоном і dreftymac, це буквально добре відповіло на моє запитання, і закриття його завадило подальшим можливим хорошим відповідям.
Інструменти фараона

Відповіді:


139

Останнє оновлення : 26 липня 2017 року

Ось підсумок стану YAML в PHP:

  • Обгортки до бібліотек С: Ви, мабуть, захочете їх, якщо вам потрібна швидкість:
    • php-yaml : обгортка для LibYAML . Доступний у вигляді розширення PECL; це також той, який знаходиться в документах PHP .
    • syck : прив’язка до syck; також доступний як розширення PECL. (датовано, див. нижче)

  • Чисті реалізації 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 

1
Є й інші менш відомі бібліотеки (на кшталт цієї , від проекту Орда), але я не хотів багато вникати в них.
NullUserException

3
Я використовую sfYaml близько двох років, і на тесті на продуктивність я зрозумів, що sfYaml :: parse () займає більшу частину часу обробки. Я замінив його на php-yaml, і додаток зараз на 70% швидше! Це величезна різниця.
Аттіла Фулоп

1
Оновлення PHP на 2019 рік для PHP: у "шпигуна" стільки проблем, тоді як "sfYaml" працює чудово.
ViliusL

49

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

1
+1 Я просто хотів швидкого та простого способу використання YAML у сценарії імпорту. Моєму додатку не потрібна підтримка, крім імпорту (і, можливо, колись експорту). Я виявив, що шпигун, зазначений як "ще один аналізатор YAML", був рішенням у 1 клік. Я скинув один скрипт у свою папку сценаріїв, включив його та назвав один метод. Це не стає простішим за це, і тепер я повертаюся до роботи - блокпост видалено.
Ерік Робертсон

1
Застарілі та безліч файлів Yaml розбору неправильно (деякі дані втрачаються).
ViliusL



3

Якщо ви використовуєте багато YAML у своєму проекті, ви можете виявити, що чисті бібліотеки PHP, такі як шпиц або Symfony YAML, не є досить швидкими. Існує щонайменше два прив'язки PHP для парсерів C YAML:

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


2

Спробуйте sfYaml , це найкраще, що я знаю.

Symfony та Doctrine ORM використовують це.

Щоб отримати його, ви можете завантажити Доктрину 1.2 та витягнути sfYamlз vendorкаталогу.

Повідомте нас, чи відповідає вашим потребам.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.