是否可以在带有 symfony/yaml 的 yaml 中为键使用别名?

Is it possible to use alias for keys in yaml with symfony/yaml?

我一直在尝试使用 symfony/yaml(v4.4.0) 和 cakephp3 来读取以下 yaml 文件。
但是,我收到以下错误。

Reference "aaa" does not exist in "path to yml" at line xx (near "*aaa:").
Symfony\Component\Yaml\Exception\ParseException

我想稍后使用 'aaa' 作为密钥。
它不适用于“*aaa:”,适用于“1:”。
基本上,是否可以在 yaml 文件中为密钥使用别名?

这是 yaml 文件。

aaa: &aaa 1
bbb: &bbb 2
ccc: &ccc 3

*aaa: # <- this doesn't work and works with '1:'
  - *bbb
  - *ccc

对于符合一般规范的 YAML 解析器

需要在:前加上space。

aaa: &aaa 1
bbb: &bbb 2
ccc: &ccc 3

*aaa :
  - *bbb
  - *ccc

YAML 1.2 允许 : 成为锚的一部分,因此,如果 : 写在别名旁边(因为它成为锚的一部分),则该行不会被解析为隐式键别名)。 这是 discussed on the YAML core mailing list

对于 Symfony

Symfony 似乎将 *aaa: 解析为别名 *aaa,将 : 作为值指示符。虽然这是违反规范的行为,但它不应该打扰我们,因为根据邮件列表,这更像是规范中的疏忽。但是,Symfony 无法在此处解析别名,您对此无能为力,只能为它提交问题。