PHP 中 YAML 的使用:库与工具
YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化格式。它常用于配置文件、数据模式定义以及服务间的信息交换。在 PHP 中,有多种处理 YAML 的方式:从内置扩展(如果可用)到强大的第三方库。本文将详细介绍主要工具、它们的安装方法以及实际示例。
为什么在 PHP 中需要 YAML?
PHP 开发者广泛使用 YAML 来:
- 框架的配置文件(Symfony,某些情况下的 Laravel);
- 描述数据库迁移;
- 存储翻译和本地化内容;
- 定义测试数据结构(fixtures);
- 配置 CI/CD(GitLab CI、Ansible)。
理解如何在 PHP 中解析和创建 YAML,是现代后端开发者的必备技能。
1. 内置 yaml 扩展(PECL)
最高性能的方式是使用通过 PECL 安装的 yaml 扩展。它提供了两个关键函数:
yaml_parse()— 将 YAML 字符串转换为 PHP 数组;yaml_emit()— 将 PHP 数组转换为 YAML 字符串。
安装
pecl install yaml安装后,在 php.ini 中添加一行:
extension=yaml.so使用示例
<?php// 解析 YAML 字符串$yamlString = "database: host: localhost port: 3306 name: test_db";
$config = yaml_parse($yamlString);echo $config['database']['host']; // localhost
// 从数组创建 YAML$data = [ 'app' => [ 'name' => 'MyApp', 'version' => '2.0' ]];
$yamlOutput = yaml_emit($data);echo $yamlOutput;?>2. Symfony Yaml 库(推荐方式)
如果您无法安装 PECL 扩展(例如在共享主机上),最佳选择是 Symfony Yaml 库。它是 Symfony 生态系统的一部分,但也可以作为独立组件完美运行。该库完全用 PHP 编写,无需外部依赖,并支持 YAML 1.1 和 1.2 的所有功能。
通过 Composer 安装
composer require symfony/yaml主要类
Symfony\\Component\\Yaml\\Yaml— 静态外观,包含parse()和dump()方法;Symfony\\Component\\Yaml\\Parser— 用于解析的类,带有额外选项;Symfony\\Component\\Yaml\\Dumper— 用于创建 YAML 的类,可精细调整格式。
YAML 解析示例
<?phprequire_once 'vendor/autoload.php';
use Symfony\\Component\\Yaml\\Yaml;
$yamlContent = "server: host: 0.0.0.0 port: 8080 ssl: true";
try { $array = Yaml::parse($yamlContent); print_r($array); // Array ( [server] => Array ( [host] => 0.0.0.0 [port] => 8080 [ssl] => 1 ) )} catch (\\Symfony\\Component\\Yaml\\Exception\\ParseException $e) { echo 'YAML 解析错误: ' . $e->getMessage();}?>从数组创建 YAML(转储)
<?php$config = [ 'application' => [ 'name' => 'PHP App', 'debug' => true, 'database' => [ 'driver' => 'mysql', 'host' => 'localhost', 'user' => 'root' ] ]];
$yaml = Yaml::dump($config, 3, 2);// 第二个参数是内联层级,第三个参数是空格缩进echo $yaml;?>执行结果:
application: name: 'PHP App' debug: true database: driver: mysql