Skip to content
内容导航

PHP

在 PHP 中操作 Yaml 可以选择给 PHP 添加 yaml 扩展 或者使用 symfony/yaml 组件来操作 Yaml 文件。

Yaml 扩展

安装 Yaml 扩展

Yaml 扩展下载地址

下面演示在 MacOS 上安装 yaml 扩展的流程,具体流程可以查看这里

bash
brew install libyaml # 安装依赖
pecl install yaml # 使用 pecl 命令安装

php -m |grep yaml # 检查是否安装成功

使用 Yaml 扩展

php
## 1. 读内容并转换成数组
$contents = <<<Yaml
php:
preset: laravel
disabled:
   - no_unused_imports
finder:
   not-name:
      - index.php
js: true
css: true
Yaml;

print_r(yaml_parse($contents));

## 2. 读文件并转换成数组(将上面的 $contents 内容写入文件 .styleci.yml 文件)
print_r(yaml_parse_file('./.styleci.yml'));
# Array
# (
#     [php] => Array
#         (
#             [preset] => laravel
#             [disabled] => Array
#                 (
#                     [0] => no_unused_imports
#                 )
#
#             [finder] => Array
#                 (
#                     [not-name] => Array
#                         (
#                             [0] => index.php
#                         )
#
#                 )
#
#         )
#
#     [js] => 1
#     [css] => 1
# )
php
# 读数组并转换成Yaml
$contents = [
   'php' => [
       'preset'   => 'laravel',
       'disabled' => ['no_unused_imports'],
       'finder'   => [
           'not-name' => ['index.php']
       ]
   ],
   'js'  => true,
   'css' => true,
]; 
print_r(str_replace("\n...", '', yaml_emit($contents)));
# ---
# php:
#   preset: laravel
#   disabled:
#   - no_unused_imports
#   finder:
#     not-name:
#     - index.php
#   js: true
#   css: true

Yaml 组件

安装 symfony/yaml 组件

下载地址:http://pecl.php.net/package/yaml

bash
composer require symfony/yaml

使用 symfony/yaml 组件

php
## 1. 读内容并转换成数组
$contents = <<<Yaml
php:
preset: laravel
disabled:
   - no_unused_imports
finder:
   not-name:
      - index.php
js: true
css: true
Yaml;
$value    = Yaml::parse($yaml_str);
print_r($value);

## 2. 读文件并转换成数组(将上面的 $contents 内容写入文件 .styleci.yml 文件)
$value = Yaml::parseFile('./.styleci.yml');
print_r($value);

## 以上打印均输出如下:
# Array
# (
#     [php] => Array
#         (
#             [preset] => laravel
#             [disabled] => Array
#                 (
#                     [0] => no_unused_imports
#                 )
#
#             [finder] => Array
#                 (
#                     [not-name] => Array
#                         (
#                             [0] => index.php
#                         )
#
#                 )
#
#         )
#
#     [js] => 1
#     [css] => 1
# )
php
# 读数组并转换成Yaml
$contents = [
   'php' => [
       'preset'   => 'laravel',
       'disabled' => ['no_unused_imports'],
       'finder'   => [
           'not-name' => ['index.php']
       ]
   ],
   'js'  => true,
   'css' => true,
];
$yaml  = Yaml::dump($array, 4, 2);
file_put_contents('./.styleci.yaml', $yaml);

## 写入的文件内容如下:
# php:
#   preset: laravel
#   disabled:
#     - no_unused_imports
#   finder:
#     not-name:
#       - index.php
# js: true
# css: true