+1 хоть и неконструктивная, но эта страница была для меня чрезвычайно полезной
Эрик Робертсон
2
учитывая качество ответа, получившего наибольшее количество голосов на этот вопрос, удивительно, что этот вопрос был закрыт как «неконструктивный».
dreftymac 08
Я только что выпустил свой парсер BabyYaml, который является более простым двоюродным братом Yaml, если вам интересно, посмотрите его здесь: github.com/lingtalfi/BabyYaml
ling
Я должен согласиться с Эриком Робертсоном и dreftymac, это буквально хорошо ответило на мой вопрос, и закрытие его предотвратило дальнейшие возможные хорошие ответы.
Pharaoh Tools
Ответы:
139
Последнее изменение : 26 июля 2017 г.
Вот краткое изложение состояния YAML в PHP:
Обертки для библиотек C: они вам, вероятно, понадобятся, если вам нужна чистая скорость:
syck : привязка к syck; также доступно как расширение PECL. (датировано, см. ниже)
Реализации на чистом PHP:
sfYaml : YAML-компонент Symfony. Мотивацию авторов вы можете увидеть здесь . Он хотел что-то, что было бы « простым в использовании, быстрым, модульным и с четкими сообщениями об ошибках ».
На момент написания этой статьи даты выпуска последних версий для вышеупомянутых библиотек и поддерживаемых ими версий спецификации YAML (1.2 - последняя версия):
Есть и другие менее известные библиотеки (например, эта из проекта Horde), но я не хотел вдаваться в подробности.
NullUserException
3
Я использую sfYaml около двух лет, и во время теста производительности я понял, что sfYaml :: parse () занимает большую часть времени обработки. Я заменил его на php-yaml, и теперь приложение работает на 70% быстрее! Это огромная разница.
Аттила Фулоп,
1
Обновление 2019 для PHP: у spyc очень много проблем, а у sfYaml работает нормально.
Чистая реализация PHP, поэтому вам не нужно вносить какие-либо изменения в сервер для установки. Если скорость вызывает серьезную озабоченность, это может быть не идеальное решение, но если вы используете YAML для конфигураций или относительно небольшого объема, это фантастическое решение.
Учитывая документ YAML, Spyc вернет массив, который вы можете использовать по своему усмотрению.
+1 Мне просто нужен был быстрый и простой способ использовать YAML в скрипте импорта. Мое приложение не требует поддержки, кроме импорта (и, возможно, когда-нибудь экспорта). Я обнаружил, что spyc, указанный как «еще один анализатор YAML», был решением в один клик. Я бросил один сценарий в папку со сценариями, включил его и вызвал один метод. Легче не бывает, и теперь я возвращаюсь к работе - препятствие снято.
Эрик Робертсон
1
Устаревшие и многие файлы yaml разбираются неправильно (некоторые данные теряются).
ViliusL
15
Рамки Symfony делает очень интенсивное использование YAML, в этом блоге по Грегуару Hubert демонстрирует использование их библиотек YAML в проекте без фреймворки.
Это хороший ответ, потому что парсер Symfony2 YAML не устарел. sfYamlнапример есть.
ferdynator 01
3
Если вы используете много YAML в своем проекте, вы можете обнаружить, что чистые библиотеки PHP, такие как spyc или Symfony YAML, недостаточно быстры. Для парсеров C YAML существует как минимум две привязки PHP:
yaml - обертка для библиотеки парсера LibYAML YAML 1.1
syck - обертка для библиотеки парсера Syck YAML 1.0
Если вам нужно быстро протестировать свой YAML, я создал: http://yaml-online-parser.appspot.com/ . Это помогает мне писать YAML, особенно когда я только учусь.
Ответы:
Вот краткое изложение состояния YAML в PHP:
Реализации на чистом PHP:
На момент написания этой статьи даты выпуска последних версий для вышеупомянутых библиотек и поддерживаемых ими версий спецификации YAML (1.2 - последняя версия):
источник
Шпион: https://github.com/mustangostang/spyc
Чистая реализация PHP, поэтому вам не нужно вносить какие-либо изменения в сервер для установки. Если скорость вызывает серьезную озабоченность, это может быть не идеальное решение, но если вы используете YAML для конфигураций или относительно небольшого объема, это фантастическое решение.
Учитывая документ YAML, Spyc вернет массив, который вы можете использовать по своему усмотрению.
Учитывая массив, Spyc вернет строку, содержащую документ YAML, созданный на основе ваших данных.
источник
Рамки Symfony делает очень интенсивное использование YAML, в этом блоге по Грегуару Hubert демонстрирует использование их библиотек YAML в проекте без фреймворки.
источник
Symfony2 имеет компонент YAML, который поддерживает большую часть спецификации YAML 1.2.
https://github.com/symfony/Yaml
источник
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, особенно когда я только учусь.
источник