YAML文件结构简介
admin
2023-06-15 07:43:06
0次

在看drupal8,发现其模块和主题的定义使用的是YAML文件。drupal8使用的Symfony框架中YAML文件结构,故翻译整理学习下,有理解不准确的地方请多多指教。

String

一般字符串可以使用单引号,双引号或者不使用引号。

A string in YAML
'A singled-quoted string in YAML'
"A double-quoted string in YAML"

当使用单引号字符串时,其内容中的任何单引号必须加倍才能转义:

'A single quote '' inside a single-quoted string'

包含以下任何字符都需要引号,可以使用单引号或双引号,但使用单引号更方便

:, {, }, [, ], ,, &, *, #, ?, |, -, <, >, =, !, %, @, `

双引号方式提供了以一种表示任意字符串的方法,使用\来转义字符和序列

\0, \x01, \x02, \x03, \x04, \x05, \x06, \a, \b, \t, \n, \v, \f, \r, \x0e, \x0f, \x10, \x11,  \x12, \x13, \x14, \x15, \x16, \x17, \x18, \x19, \x1a, \e, \x1c, \x1d, \x1e, \x1f, \N, \_, \L, \P

"A double-quoted string in YAML\n"

注:测试发现,当字符串中包含上面字符时,使用单引号也可以转义的

最后还有其他一些情况,不管你使用单引号还是双引号

  • true or false ( 否则就是布尔值 )  

  • null or ~ (否则认为是null)

  • 当看起来像整数如2,14;浮点数如2.6,14.9;指数如12e7等,否则被视为一个数值

  • 当看起来像一个日期如2014-12-31,否则会自动转为一个Unix时间戳

'true'
'null'
'2.14'
'2014-12-31'

当一个字符串中包含换行符时,可以使用由(|)管道符来指示该字符串将跨越多行。在文字中,换行符被保存下来

|
  \/ /| |\/| |
  / / | |  | |__

或者字符串可以使用折叠样式编写,用>表示,其中每行换行符被空格替换

>  
  This is a very long sentence
  that spans several lines in the YAML
  but which will be rendered as a string
  without carriage returns.

Numbers

12 #十进制
014 #八进制
0xC #十六进制
13.4 #浮点数
1.2e+24 #指数
.inf #无穷

Nulls

null
~

Booleans

true
false

Dates

#简单日期
2002-12-14

Collections

- PHP
- Perl
- Python

对应PHP为

array('PHP','perl','Python')
PHP:    5.2
MySQL:  5.1
Apache: 2.2.20

对应PHP为

array('PHP' => 5.2, 'MySQL' => 5.1, 'Apache' => '2.2.20');
'symfony 1.0':
  PHP:    5.0
  Propel: 1.2
'symfony 1.2':
  PHP:    5.2
  Propel: 1.3

对应PHP为

array(
    'symfony 1.0' => array(
        'PHP'    => 5.0,
        'Propel' => 1.2,
    ),
    'symfony 1.2' => array(
        'PHP'    => 5.2,
        'Propel' => 1.3,
    ),
);

在YAML文件中使用缩进时需要记住一件重要的事情:缩进必须由一个或多个空格完成,但从不使用制表符。

也可以根据需要嵌套序列和映射

'Chapter 1':
  - Introduction
  - Event Types
'Chapter 2':
  - Introduction
  - Helpers

也可使用明显的指示符而不是缩进

[PHP, Perl, Python] 
{ PHP: 5.2, MySQL: 5.1, Apache: 2.2.20 }
'Chapter 1': [Introduction, Event Types]
'Chapter 2': [Introduction, Helpers]
'symfony 1.0': { PHP: 5.0, Propel: 1.2 }
'symfony 1.2': { PHP: 5.2, Propel: 1.3 }

注释

#comment on a line

Explicit Typing

YAML规范定义了一些标签来显式地设置任何数据类型:

data:
  # this value is parsed as a string (it's not transformed into a DateTime)
  start_date: !!str 2002-12-14

  # this value is parsed as a float number (it will be 3.0 instead of 3)
  price: !!float 3

  # this value is parsed as binary data encoded in base64
  picture: !!binary |
  R0lGODlhDAAMAIQAAP//9/X
  17unp5WZmZgAAAOfn515eXv
  Pz7Y6OjuDg4J+fn5OTk6enp

Unsupported YAML Features

Symfony Yaml组件不支持以下YAML特性:

  • Multi-documents (--- and ... markers); 多文档(---和...标记);

  • Complex mapping keys and complex values starting with ?;以?开头的复杂映射键和复数值;

  • Tagged values as keys;标记为键的值;

  • 下面标签和类型: !!set, !!omap, !!pairs, !!set, !!seq, !!bool, !!int, !!merge, !!null, !!timestamp, !!value, !!yaml;

  • 标记(TAG指令;例如:%TAG!标记:example.com,2000:app /)和标记引用(例如:!);

  • 映射元素使用类似序列的语法(例如:{foo,bar};改为使用{foo:〜,bar:〜})


原文地址:http://symfony.com/doc/current/components/yaml/yaml_format.html

验证地址:https://codebeautify.org/yaml-to-json-xml-csv


---

仅供个人理解参考


上一篇:获取form所有name值

下一篇:数组array集合

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...