`
m635674608
  • 浏览: 5055073 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

yaml语法

 
阅读更多

大多数的symfony配置文件使用YAML格式。YAML 官方网站称 YAML 是“一种所有编程语言可用的友好的数据序列化标准”。

YAML 是一种轻量化的数据描述语言。类似于 PHP, YAML一样具有轻量化的语法与数据类型,如字符串、布尔型、浮点型或整数型等。但不同于PHP的是,它区分数组(序列)和散列表(哈希表) 。

尽管 YAML 格式能够描述更为复杂的嵌套的数据结构,本节仅描述你在 symfony 中使用 YAML 作为配置文件所需要了解的 YAML 最小功能集。

基础类型

YAML 基础类型语法与PHP中的相似。

字符串A string in YAML'A singled-quoted string in YAML'

在一个单引号标注的字符串中,一个单引号'必须用另一个单引 号进行转义:

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

"A double-quoted string in YAML\n"

当一个字符串前后包含空格时,必须使用引号标注的格式。

双引号标注的风格提供了一种使用转义符号\表达任意字符串的 方式。当您需要嵌入一个\n或Unicode字符的时候,这是非常有用的。

当一个字符串包含换行符,您可以通过使用|符号表明该字符串将跨越数行,从而使用传统的文本风格。在这种格式下,换行符 将不被转义:

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

或者,字符串可以通过>符号写成这样的折叠式,这样每一个换行符都将被替换成空格:

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

请注意:在上面这个例子中,每一行前的两个空格将不会出现在结果的PHP字符串中。

数字
12       # 整数
014     # 八进制整数

0xC    #十六进制整数
13.4   #浮点数  
1.2e+34    #指数      
.inf空值      #无穷大   

在YAML中,空值可以用null~ 表示。

布尔值

在YAML中,布尔值用truefalse 表示。

尽管 symfony 的 YAML解析器能够把on 、 off 、 yesno 等解析为布尔值,但是我们强烈反对使用他们,因为它们已经在YAML 1.2标准中被移除。

日期

YAML 使用 ISO-8601 标准表示日期:

2001-12-14t21:59:43.10-05:00#简单日期示例
2002-12-14集合

YAML文件很少仅用来描述一个简单的基础类型。大多数时候,它被用来描述一个集合。一个集合可以是一个序列(数组)或散列表(哈希表)。序列和散 列表都会被转换成为 PHP 的数组。

使用一个跟着空格的“-”符号来声明一个序列:

- 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');

在散列表中,键 (key) 可以是任何合法的YAML基础类型。

一个散列项的冒号和值之间必须至少有一个或者更多个空格,而具体的空格数目并不重要:

PHP: 5.2
MySQL: 5.1
Apache: 2.2.20

YAML使用一个或多个空格的缩进来描述嵌套集合:

"symfony 1.0":
PHP: 5.0
Propel: 1.2
"symfony 1.2":
PHP: 5.2
Propel: 1.3

这段 YAML 代码相当于下面的PHP代码:

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

在YAML文件中使用缩进时必须牢记的一件事情是: 必须使用一个或多个空格进行缩进,而不能使用制表符 (Tab键) 。

你可以像这样混合使用嵌套的序列和散列表:

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

YAML也可以使用流风格的集合,使用明确的标示符而不是缩进进行集合范围的界定。

一个序列可以写成方括号( [] ) 中逗号分隔的列表的形式:

[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 }注释

YAML 中添加注释的方式是通过井字符(#):

#行末评论
"symfony 1.0": { PHP: 5.0, Propel: 1.2 } # Comment at the end of a line
"symfony 1.2": { PHP: 5.2, Propel: 1.3 }

由于注释会被YAML解析器忽略,因此不必刻意对注释进行缩进。

动态 YAML 文件

在 symfony 中,一个 YAML 文件可以包含 PHP 代码,这部分代码将在 YAML 文件解析前被执行:

1.0:
version: <?php echo file_get_contents('1.0/VERSION')."\n" ?>
1.1:
version: "<?php echo file_get_contents('1.1/VERSION') ?>"

注意保持文件的正确缩进格式。当在 YAML 中嵌入 PHP 代码时,应记住以下几点:

  • <?php ?> 语句必须在一行的开始,或作为一个属性的值的一部分
  • <?php ?>在行末,则需要在 php 中输出一个换行符(”\n”)。
一个完整的 例子

下面的例子使用了本章中提到的 YAML 语法:

"symfony 1.0":
end_of_maintainance: 2010-01-01
is_stable: true
release_manager: "Gregoire Hubert"
description: >
This stable version is the right choice for projects
that need to be maintained for a long period of time.
latest_beta: ~
latest_minor: 1.0.20
supported_orms: [Propel]
archives: { source: [zip, tgz], sandbox: [zip, tgz] }

"symfony 1.2":
end_of_maintainance: 2008-11-01
is_stable: true
release_manager: 'Fabian Lange'
description: >
This stable version is the right choice
if you start a new project today.
latest_beta: null
latest_minor: 1.2.5
supported_orms:
- Propel
- Doctrine
archives:
source:
- zip
- tgz
sandbox:
- zip
- tgz
 
http://www.360doc.com/content/15/0228/17/12090552_451540006.shtml
分享到:
评论

相关推荐

    YAML语法&用法

    **YAML(YAML Ain't Markup Language)**是一种高级的数据序列化语言,广泛用于配置文件、数据交换和脚本语言中的数据表示。...理解和掌握 YAML 语法对于任何涉及到配置文件和数据交换的工作都至关重要。

    yaml语法学习.md

    yaml语法学习.md

    YAML语法-用法说明书

    YAML是一个可读性高,用来表达资料序列的编程语言。YAML参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822。Clark Evans在2001年在首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki...

    最全 Yaml 语法详解

    在本文中,我们将深入探讨 YAML 的基本语法和主要特性。 ### 基本语法 1. **缩进规则**:YAML 文件中的缩进非常重要,用于表示数据的层次结构。值得注意的是,YAML 不允许使用 Tab 键进行缩进,只能使用空格。缩进...

    springboot基础学习,包括微服务架构;yaml语法;自动装配原理;JSR303校验;

    springboot基础学习,包括微服务架构;yaml语法;自动装配原理;JSR303校验;web开_springboot-study

    yamlify-object:使用Yaml语法对对象数组进行字符串化

    使用yaml语法对对象/数组进行字符串化 安装 npm install yamlify-object 用法 const yamlifyObject = require ( 'yamlify-object' ) ; const obj = { array : [ 2 , 'two' , { emptyArray : [ ] , } , ] , ...

    12-Python全局配置文件ini文件处理&YAML文件处理

    YAML的语法特性包括缩进表示层次关系,以及支持字符串、数字、列表、字典等多种数据类型。这使得它成为配置文件的理想选择,特别是当配置包含复杂结构时。 在实际项目中,理解如何使用`configparser`处理INI文件和`...

    yaml-cpp-yaml-cpp-0.6.2.zip

    在0.6.2版本中,YAML-CPP库对错误处理进行了优化,提供了丰富的异常机制,当遇到无效的YAML语法或类型转换失败时,会抛出相应的异常,帮助开发者快速定位问题。 总之,YAML-CPP库是C++开发者处理YAML数据的强大工具...

    yaml_test.rar

    综上所述,处理yaml文件涉及的知识点包括:yaml语法、C#编程、`YamlDotNet`库的使用、数据序列化与反序列化、C++中的yaml-cpp库、Python的`PyYAML`库、OpenCV的`FileStorage`类以及跨语言的数据处理能力。

    tree-sitter-yaml:用于保姆的YAML语法

    面向YAML( )语法 安装 npm install tree-sitter-yaml tree-sitter 用法 const Parser = require ( "tree-sitter" ) ; const YAML = require ( "tree-sitter-yaml" ) ; const parser = new Parser ( ) ; parser . ...

    vim-yaml:覆盖Yaml文件的vim语法

    维姆·雅姆(Vim Yaml) 来自语法文件 由于核心yaml语法,vim 7.4中的Yaml文件确实很慢。 此语法更简单/更快。 g:yaml_limit_spell 设置为1可将拼写检查(如果启用了拼写检查)限制为Yaml注释和字符串。

    YAML基础语法

    在区块链技术中,YAML的特性也得到了应用,例如,在区块链应用的配置文件中,YAML以其简洁的语法特性,提高了开发的效率和配置的可读性。接下来,我们深入了解YAML的基础语法和数据类型。 首先,YAML的基本规则需要...

    k8s的ingress yaml文件

    Ingress YAML文件是配置Ingress规则的文本文件,它使用YAML语法来描述HTTP和HTTPS路由规则,以便将外部请求定向到正确的目标服务。下面,我们将深入探讨Ingress的概念、作用以及如何通过YAML文件进行配置。 ### ...

    yaml-0.1.5.tar.gz

    它以其简单易用的YAML语法和无代理架构而著名,使得系统管理员可以轻松地自动化复杂的工作流程。 在压缩包的文件名称列表中,我们只看到"yaml-0.1.5",这可能是指解压后会得到一个名为"yaml-0.1.5"的目录,其中包含...

    k8s kubernetes dashboard dns 配置文件 yaml

    3. YAML语法:遵循YAML的语法规则,避免出现缩进错误,这可能导致资源无法正确加载。 4. 集群安全:使用最新版本的组件以获得最新的安全补丁,定期更新集群。 5. 监控与日志:配置适当的监控和日志记录,以便及时...

    yaml文件格式规范-yaml文件

    YAML 语法约定 **3.1 大小写敏感** YAML 是大小写敏感的,所以在编写时要注意区分。 **3.2 注释** 以 `#` 开头的行被视为注释,不会被解析。 **3.3 Unicode 编码** YAML 使用 Unicode 编码作为字符标准。 **3.4...

    nexus的yaml文件

    1. **YAML语法**:YAML以空格缩进区分层级,而非XML或JSON的尖括号或花括号。键值对以冒号分隔,例如`key: value`。行首的`-`表示列表项。 2. **数据类型**:YAML支持字符串、整数、浮点数、布尔值、日期、null等...

    k8s项目部署相关yaml文件.rar

    Kubernetes(简称k8s)是目前非常流行的容器编排系统,用于管理云环境中的容器化应用。...同时,了解YAML语法以及k8s资源对象的结构也至关重要。只有这样,你才能正确地部署和管理你的k8s项目,确保应用的稳定运行。

    自己摘录和简单翻译的homeassistant文档

    在本文档中,我们将详细介绍 HomeAssistant 的配置文件、YAML 语法、组件和平台的概念,以及如何使用环境变量等。 一、HomeAssistant 配置文件 HomeAssistant 在首次启动时,会生成一个默认配置文件,以实现 Web ...

    draft:使用YAML语法生成高级云架构图

    一个命令行工具,使用在YAML文件中定义的声明性语法产生H IGH大号伊维尔基尼的microService&无服务器体系结构的设计图。 适用于 只是一个 在平面YAML文本文件中输入数据 可用于shell脚本 为什么? 我更喜欢从功能而...

Global site tag (gtag.js) - Google Analytics