释文语法

系统使用doctrine/annotations释文库去解析该语法,此语法很全面,但在drupal中只使用到了很简单的一部分:

以@开始,前只能是空格或者*,不能为其他字符,后接释文对象类名,释文元数据将传递给该类产生一个实例,可以是短类名,也可以是全限定名字空间类名,后接一个括号,里面是键值对。

键值对应该以插件id开始

根级别的键名可以使用双引号,子级别的键名必须使用双引号

不能使用单引号

键值的有效数据类型为:

Strings:字符串型,必须使用双引号,如果内容本来就有双引号,那么使用多一个双引号转义:如”The “”On”” value”

Numbers:数字型,不能用双引号,如果使用则被当做字符串值

Booleans:布尔类型,不能用双引号,如果使用则被当做字符串值

Lists: 列表类型,使用花括号,如:

  1. base = {
  2. "node",
  3. "foo",
  4. }

注意foo后面的逗号,它不是写错了,如果有其他元素放在列表后面,它用来帮助避免语法错误

Maps:映射,用花括号,使用等号分割键和值,如:

  1. edit = {
  2. "editor" = "direct",
  3. }

可以使用常量

键值可以使用@开始一个新释文对象,@前需要有空格,如:

  1. /**
  2. * EntityReference style plugin.
  3. *
  4. * @ingroup views_style_plugins
  5. *
  6. * @ViewsStyle(
  7. * id = "entity_reference",
  8. * title = @Translation("Entity Reference list"),
  9. * help = @Translation("Returns results as a PHP array of labels and rendered rows."),
  10. * theme = "views_view_unformatted",
  11. * register_theme = FALSE,
  12. * display_types = {"entity_reference"}
  13. * )
  14. */

这就是释文嵌套,就是释文里面还可以包含释文,被嵌套的释文会被转换成释文对象,然后作为键值传递给外层释文对象做参数

如果键值对只有一个id,那么可以进行简写,如:@FormElement(“date”)