恐らく今や多くの現場でPHPStan, Psalm, Rector, php-class-diagram等の静的解析ツールが利用されているのではないでしょうか。その縁の下でPHP Parserがせっせと働いています。さて、そのメジャーバージョンが繰り上がり5.0.0がリリースされて1年程が経ちました。そして継続的にメンテナンスされ今ではPHP8.4にも対応しています。
そろそろ5系をのぞいてみたくありませんか?
このトークはPHP Parserの働きを効率よく理解できるようにすることを目指します。そのために、5系において定義されているノードの全体像を整理します。そして、PHPコードの具体例を使用し、コードとノードの対応関係について説明します。ノードとはPHP Parserがコードを解析して生成するASTの構成要素です。単なるテキストの羅列ではなく構造化された情報であるASTにより効果的な解析が可能になります。それを理解する事は、例えば、静的解析ツールの仕組みの理解を深める際や、そのカスタムルールを作成する際に役立つと考えられます。
このトークの目的はもう一つあります。私達はPHP Parserから大きな恩恵を受けています。しかし、その事を気に留めることはほとんどないのではないでしょうか。年に1度、5分だけ、1年分の感謝を込めてPHP Parserだけを見つめASTに想いを馳せる。そんな時間にしたいと思います。