Packagistでqrcodeと検索すると一番上に出てくるパッケージがこれ。
SVG出力もしてくれて使いやすいんだけど、SVGのQRコードを2つ以上置くときに問題が発生した。
(左のQRコードの真ん中が黒いのはQRコードを読めないようにしただけ)
原因
原因は、1つ目のQRコードが
<defs><rect id="block" width="3" height="3" fill="#000000" fill-opacity="1"/></defs>
としていて、2つ目のQRコードが
<defs><rect id="block" width="6" height="6" fill="#000000" fill-opacity="1"/></defs>
としているんだけど、このrect#blockが被ってしまっているので、1つ目のwidth/heightを2つ目のQRコードにも使ってしまうのであった。
対応
コードを見たら
$blockDefinition->addAttribute('id', 'block');
$block->addAttribute('xlink:href', '#block', 'http://www.w3.org/1999/xlink');
おぉっと、これはハードコーディングですね。
ということで、これは出力したSVGタグをstr_replaceで回避するしかない…プルリクエスト出しておいたらAcceptされてめでたしめでたし。