Featured image of post Symfonyで「 Enable the Yaml::PARSE_CUSTOM_TAGS 」とエラーが出た場合の対処法

Symfonyで「 Enable the Yaml::PARSE_CUSTOM_TAGS 」とエラーが出た場合の対処法

Twitter ツイート Hatena Bookmark ブックマーク

SymfonyでCI回す際に bin/console lint:yaml でyamlのチェックすることもあるかと思います。
僕はlint系は常にCIでチェックする派です。

services.yamlでtagged_iteratorの設定をすると以下のエラーが出ました。

1
2
3
4
$ bin/console lint:yaml config/ --env=test

  ERROR  in config/services.yaml
  >> Tags support is not enabled. Enable the "Yaml::PARSE_CUSTOM_TAGS" flag to use "!tagged_iterator" at line 50 (near "!tagged_iterator { tag: app.converter }").

なぜこのエラーがでるかというと、!tagged_iteratorがYaml標準ではなくSymfony独自の拡張だからみたいです。
他にも !php/const!!binary も独自の拡張みたいです。

Parsing and Dumping of Binary Data

解決策

--parse-tags のフラグをつけることで解決できます。

1
$ bin/console lint:yaml --parse-tags

最後に

Tagを使ったDIの利用方法についてはカルテッドさんのこの記事みるとよいです。

Symfonyで同種のクラスを大量に使うときDIで楽するテクニック(自作タグのススメ)
ちなみに記事中には !tagged と紹介されていますが、現在は !tagged_iterator に変更になっています。

Rename !tagged to !tagged_iterator

Symfonyのタグ関連覚えると、より柔軟にアプリが作れるので覚えておいて損はないかと思います。

comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。