首页 > PHP框架 > QeePHP > 正文

QeePHP YAML 入门
2010-01-25 21:44:08   来源:   评论:0 点击:

QeePHP 为了方便开发者,大量使用了 YAML 格式的文件来存储配置信息。因此掌握阅读和书写 YAML 格式文档的基本知识是很有必要的。

YAML 格式本身具有非常强大的表达能力,常用的有下面几种:

  • 名值对,例如 key => value,这和 PHP 中以字符串做键名的数组一样;
  • 列表,例如 value1, value2,这和 PHP 中以数字做键名的数组一样;
  • 多行文本。

名值对

最简单的名值对:

# 这是一行注释
my_name: rockwell # 这也是注释
  • 以 # 开头的内容则是注释。
  • 以“:”为结束符的字符串,代表了一个键名,“:”后面则是键值。“:”和键值之间必须有至少一个空格

因此,上述内容 my_name 是键名,rockwell 是键值,解析为 PHP 数组为:

array(
    'my_name' => 'rockwell',
)

 

嵌套的名值对:

#### 首页显示设置
homepage:
  # 首页内容缓存时间(秒)
  cached_lifetime: 300
  # 首页上显示多少条最新主题文章
  topics_num: 2
  # 首页上显示多少条最新社区活动
  activities_num: 3

cached_lifetime 等键是 homepage 键的次级,所以 cached_lifetime 前面有两个空格作为缩进。使用两个空格作为一级缩进是 YAML 的约定,不能使用制表符(Tab)来代替,务必注意这一点。

解析结果为:

array(
    'homepage' => array(
        'cached_lifetime' => 300,
        'topics_num'      => 2,
        'activities_num'  => 3,
    ),
)

在书写名值对时,如果键名或键值包含非英文字母和数字,应该用引号括起来:

'标题': '这是我的第一本杂志'

这里我们使用了单引号。而双引号和单引号的区别:

'键名1': '文字\n文字'
'键名2': "文字\n文字"

使用双引号括起来的字符串中的 \n 符号会被解析为换行符,而单引号中的 \n 符号则仍然视为两个普通字符。

列表

简单的列表:

-  value1
-  value2
-  value3

解析结果为:

array('value1', 'value2', 'value3')

另一种写法:

- [value1, value2, value3]

注意第二种写法前面的“-”必不可少,并且要跟随至少一个空格。

名值对和列表的混用

名值对和列表混用是很常见的写法,参考:

# 后台管理菜单标签
admin_tabs:
  '首页':
    -
      title: '主题文章'
      udi: 'admin::topics/index'
    -
      title: '社区活动'
      udi: 'admin::activities/index'
 
  '项目':
    -
      title: '项目管理'
      udi: 'admin::projects/index'
 
  '应用':
    -
      title: '应用展示管理'
      udi: 'admin::cases/index'

这个实例不但有名值对,而且有列表。所有第一个非空字符是“-”的行都代表一个列表的开始,并且后续缩进行的内容作为列表内容。该实例对应的 PHP 数组是:

array(
    'admin_tabs' => array(
        '首页' => array(
            array('title' => '主题文章', 'udi' => 'admin::topics/index'),
            array('title' => '社区活动', 'udi' => 'admin::activities/index'),
        ),
        '项目' => array(
            array('title' => '项目管理', 'udi' => 'admin::projects/index'),
        ),
        '应用' => array(
            array('title' => '应用展示管理', 'udi' => 'admin::/cases/index'),
        ),
    ),
)

另一个例子:

username:
  _ui: textbox
  _validations:
    - [is_alpha, '用户名只能是字母组成']
    - [min_length, 5, '用户名最少需要 5 个字符']

解析结果为:

array(
    '_ui' => 'textbox',
    '_validations' => array(
        array('is_alpha', '用户名只能是字母组成'),
        array('min_length', 5, '用户名最少需要 5 个字符'),
    ),
)

多行文本

多行文本适合在 yaml 文件中存储一些说明文字:

'简介': >
  快速入门教程帮助开发者了解 QeePHP 的开发模式和基本步骤,而权威指南则是开发 QeePHP 应用程序时的全面参考。
  QeePHP 所有功能的使用方法、使用时机,以及该功能的使用技巧等内容,都会在权威指南中详细阐述。
 
  权威指南按照不同的主题分为了数十篇文章。每篇文章围绕各自的中心编写内容,读者可以直接选择有针对性的文章查看。

键名后面跟上“>”符号表示多行文本的开始。接下来每一个缩进的行都会被视为多行文本的一部分。

例如:

text: >
 Sammy Sosa completed another
 fine season with great stats.
 
   63 Home Runs
   0.288 Batting Average
 
 What a year!

如果要结束一个多行文本,后续的内容只需要减少缩进即可,例如:

settings:
  text: >
   Sammy Sosa completed another
   fine season with great stats.
 
     63 Home Runs
     0.288 Batting Average
 
   What a year!
 
  title: first post

解析结果为:

Array
(
    'text' => 'Sammy Sosa completed another fine season with great stats.
  63 Home Runs
  0.288 Batting Average
 
What a year!',
 
    'title' => 'first post',
)

书写 YAML 文档

在书写 YAML 文档时,最重要的就是注意缩进。YAML 格式要求每一级缩进必须是两个空格,不能是制表字符,也不能是更多的空格。此外对于包含空格、特殊符号或汉字的键名和键值,应该使用英文引号括起来。

总结而言,书写 YAML 文档的要点如下:

  • 注意缩进

    缩进只能是两个空格为一级,不能是其他字符。

  • 字符串应该用引号

    包含空格、特殊字符以及中文的字符串应该使用英文引号括起来,不能使用中文引号。

  • 多层嵌套要注意缩进

    多层嵌套时,要注意正确的缩进。

YAML 是一种使用很方便的格式。用于存储一般的配置,YAML 有着 XML 和 PHP 数组无法比拟的优点。加上 QeePHP 对 YAML 的缓存能力,性能也不会是问题。


相关热词搜索:

上一篇:QeePHP 创建数据库
下一篇:QeePHP 修改配置文件

分享到: 收藏
频道总排行
频道本月排行