105

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

4

7 に答える 7

144

最終更新日 : 2017 年 7 月 26 日

PHP での YAML の状態の概要を次に示します。

  • C ライブラリへのラッパー: 完全な速度が必要な場合は、おそらくこれらが必要になるでしょう。
    • php-yaml : LibYAML のラッパー。PECL 拡張機能として利用可能。これはPHP の docsにもあります。
    • 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 
于 2010-09-11T16:17:03.080 に答える
50

スパイ: https://github.com/mustangostang/spyc

純粋な PHP 実装であるため、インストールのためにサーバーを変更する必要はありません。速度が非常に重要な場合、これは理想的なソリューションではないかもしれませんが、構成や比較的少量の使用に YAML を使用している場合、これは素晴らしいソリューションです。

YAML ドキュメントを指定すると、Spyc は、適切と思われる方法で使用できる配列を返します。

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

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

$yaml_str = Spyc::YAMLDump($myarray);
于 2009-05-12T18:50:10.700 に答える
16

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

于 2008-11-16T21:37:43.527 に答える
7

Symfony2 には、YAML 1.2 仕様のほとんどをサポートする YAML コンポーネントがあります。

https://github.com/symfony/Yaml

于 2012-05-01T20:56:33.867 に答える
3

プロジェクトで多くのYAMLを使用している場合、spycやSymfonyYAMLなどの純粋なPHPライブラリは十分に高速ではないことに気付くかもしれません。CYAMLパーサーには少なくとも2つのPHPバインディングがあります。

  • yaml -LibYAMLYAML1.1パーサーライブラリのラッパー
  • syck -SyckYAML1.0パーサーライブラリのラッパー
于 2010-01-25T20:50:31.417 に答える
2

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

于 2010-04-03T17:25:14.470 に答える
2

sfYamlを試してみてください。これは私が知っている最高のものです。

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

入手するには、Doctrine 1.2をダウンロードして、ディレクトリから抽出sfYamlvendorます。

お客様のニーズに合うかどうかお知らせください。

于 2010-03-15T10:52:14.767 に答える