PHP的YAMLparsing器

有谁知道一个好的YAMLparsing器的PHP? 如果是这样,这个图书馆有什么优点和缺点?

最后更新 :2017年7月26日

以下是PHP中YAML状态的总结:

  • 包装到C库:如果你需要速度,你可能会想要这些:
    • php-yaml : LibYAML的包装器。 作为PECL扩展提供; 这也是PHP的文档 。
    • syck :绑定到syck; 也可作为PECL扩展使用。 (注明date,见下文)
  • 纯粹的PHP实现:

    • sfYaml :Symfony的YAML组件。 你可以在这里看到作者的动机。 他想要一些“ 易于使用,快速,unit testing,并有明确的错误信息”
    • spyc :没有依赖关系的YAMLparsing器

在写这篇文章的时候,上述库的最新版本发布date以及它们支持的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 

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

纯粹的PHP实现,所以你不需要对服务器进行任何修改来安装。 如果速度令人担忧,这可能不是一个理想的解决scheme,但是如果您使用YAML进行configuration或使用量较低,这是一个绝佳的解决scheme。

给定一个YAML文档,Spyc将返回一个你可以使用的数组,但是你认为合适。

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

给定一个数组,Spyc将返回一个string,其中包含从您的数据构build的YAML文档。

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

symfony框架对YAML的使用非常繁重,GrégoireHubert在这篇博客文章中展示了他们的YAML库在非symfony项目中的应用。

Symfony2有一个支持大部分 YAML 1.2规范的YAML组件

https://github.com/symfony/Yaml

我build议在这篇文章中遵循的过程http://devzone.zend.com/article/2585-using-yaml-with-php-and-pecl

如果您在项目中使用了大量的YAML,您可能会发现像spyc或Symfony YAML这样的纯PHP库不够快。 C YAMLparsing器至less有两个PHP绑定:

  • yaml – LibYAML YAML 1.1parsing器库的包装器
  • syck – Syck YAML 1.0parsing器库的包装器

如果你需要快速testing你的YAML,我build立了:http: //yaml-online-parser.appspot.com/ 。 这有助于我编写YAML,尤其是在学习的时候。

尝试sfYaml ,这是我所知道的最好的。

Symfony和Doctrine ORM正在使用这一个。

为了得到它,你可以下载Doctrine 1.2并从vendor目录中提取sfYaml

让我们知道它是否适合您的需求。