PHP YAMLパーサー[終了]


105

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



16
+1は建設的ではありませんが、このページは私にとって非常に役に立ちました
Erick Robertson、

2
この質問に対する最高投票の回答の質を考えると、この質問が「建設的ではない」と締め切られたことは驚くべきことです。
dreftymac 2016年

Yamlのより単純な従兄弟であるBabyYamlのパーサーをリリースしました。興味がある場合は、github.com / lingtalfi
ling

私はErickRobertsonとdreftymacに同意する必要があります。これは文字通り私の質問によく答えており、それを閉じることでさらに良い答えを得ることができなくなりました。
ファラオツール

回答:


139

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

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

  • Cライブラリへのラッパー:まったくの速度が必要な場合は、おそらくこれらが必要です。
    • PHP-YAML:のラッパーLibYAML。PECL拡張機能として利用できます。それはまた、上の1であるPHPのドキュメント
    • sycksyckへのバインド。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 

1
他にもあまり知られていないライブラリがあります(このライブラリ、Hordeプロジェクトからのライブラリなど)が、これらについてはあまり詳しく知りたくありませんでした。
NullUserException

3
私はsfYamlを約2年間使用しており、パフォーマンステストでsfYaml :: parse()が処理時間のほとんどを費やしていることに気付きました。私はそれをphp-yamlに置き換え、アプリケーションは70%速くなりました!それは大きな違いです。
Attila Fulop、2013

1
PHPの2019年の更新:「spyc」には多くの問題がありますが、「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パーサー」としてリストされているspycは、ワンクリックのソリューションであることがわかりました。1つのスクリプトをスクリプトフォルダーにドロップし、それを含めて、1つのメソッドを呼び出しました。それよりも簡単にはならないので、今から仕事に戻ります-ロードブロッキングが削除されました。
エリックロバートソン

1
古く、多くの解析yamlファイルが正しくない(一部のデータが失われる)。
ViliusL



3

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

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


2

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

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

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

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


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.