web-dev-qa-db-ja.com

PHP YAMLパーサー

PHP用の優れたYAMLパーサーを知っている人はいますか?もしそうなら、このライブラリの長所と短所は何ですか?

105
sgibbons

最終更新:2017年7月26日

PHPのYAMLの状態の概要は次のとおりです。

  • Cライブラリへのラッパー:非常に速い速度が必要な場合は、おそらくこれらが必要です。
    • php-yamlLibYAML のラッパー。 PECL拡張として利用可能。 PHPのドキュメント にもあります。
    • syck :syckへのバインド。 PECL拡張機能としても利用できます。 (日付、以下を参照)

  • 純粋なPHP実装:

    • sfYaml :SymfonyのYAMLコンポーネント。その著者の動機を見ることができます こちら 。彼は、「使いやすく、高速で、単体テストが行​​われ、明確なエラーメッセージが表示されたもの」を求めていました。
    • 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 
136

Spyc: https://github.com/mustangostang/spyc

Pure PHP実装なので、インストールのためにサーバーに変更を加える必要はありません。構成または比較的少量の使用のためのYAMLは、素晴らしいソリューションです。

YAMLドキュメントが与えられると、Spycは適切に使用できる配列を返します。

require_once "spyc.php";
$data = Spyc::YAMLLoad($myfile);

配列を指定すると、Spycはデータから作成されたYAMLドキュメントを含む文字列を返します。

$yaml_str = Spyc::YAMLDump($myarray);
48
drowe

symfonyフレームワーク はYAMLを非常に頻繁に使用します。この GrégoireHubertによるブログ投稿 は、symfony以外のプロジェクトでYAMLライブラリを使用する方法を示しています。

15
Dan Powley

Symfony2には、YAML 1.2仕様のmostをサポートするYAMLコンポーネントがあります

https://github.com/symfony/Yaml

7
Shane

プロジェクトで多くのYAMLを使用している場合、spycやSymfony YAMLなどの純粋なPHPライブラリは十分に高速ではありません。少なくとも2つのPHPバインディング:

  • yaml -LibYAML YAML 1.1パーサーライブラリのラッパー
  • syck -Syck YAML 1.0パーサーライブラリのラッパー
3
bd808

YAMLをすばやくテストする必要がある場合は、 http://yaml-online-parser.appspot.com/ を作成しました。特に学習中にYAMLを書くのに役立ちます。

2
Paul Tarjan

この記事でプロセスに従うことをお勧めします http://devzone.zend.com/article/2585-using-yaml-with-php-and-pecl

2
preinheimer

sfYamlを試してみてください。

SymfonyとDoctrine ORMはこれを使用しています。

それを取得するには、 ダウンロードDoctrine 1.2 し、sfYamlディレクトリからvendorを抽出します。

ニーズに合っているかどうかをお知らせください。

2
takeshin