2021年04月28日
Symfonyで「 Enable the Yaml::PARSE_CUSTOM_TAGS 」とエラーが出た場合の対処法
SymfonyでCI回す際に bin/console lint:yaml
でyamlのチェックすることもあるかと思います。
僕はlint系は常にCIでチェックする派です。
services.yamlでtagged_iterator
の設定をすると以下のエラーが出ました。
$ 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
のフラグをつけることで解決できます。
$ bin/console lint:yaml --parse-tags
最後に
Tagを使ったDIの利用方法についてはカルテッドさんのこの記事みるとよいです。
Symfonyで同種のクラスを大量に使うときDIで楽するテクニック(自作タグのススメ)
ちなみに記事中には !tagged
と紹介されていますが、現在は !tagged_iterator
に変更になっています。
Rename !tagged to !tagged_iterator
Symfonyのタグ関連覚えると、より柔軟にアプリが作れるので覚えておいて損はないかと思います。