#あすみかんの上にあすみかん

たのしいことしかかかないことをここに決意します

これ【<?php】がないと始まらない!PHPインタプリタ入門 / #phpcon_odawara セッションをふりかえる

adventar.org

これは、asumikam #phpcon_odawara Advent Calendar 2025の21日目の記事です🎄

動画

www.youtube.com

感想

このLTは 「<?php タグが省略できないのか」という疑問から php-src を読み、その役割を突き止めていくという内容でした。

php-src/Zend/zend_language_scanner.l at 04bf2e5c4a480f1184f1f6171913fe9edf080c97 · php/php-src · GitHub

<INITIAL>"<?php"([ \t]|{NEWLINE}) {
    HANDLE_NEWLINE(yytext[yyleng-1]);
    BEGIN(ST_IN_SCRIPTING);
    RETURN_OR_SKIP_TOKEN(T_OPEN_TAG);
}

このコードで、HTMLモード(INITIAL)から「PHP実行モード(ST_IN_SCRIPTING)」へ切り替えるスイッチの役割を担っています。

php-src/Zend/zend_language_scanner.l at 04bf2e5c4a480f1184f1f6171913fe9edf080c97 · php/php-src · GitHub

<ST_IN_SCRIPTING>"echo" {
    RETURN_TOKEN_WITH_IDENT(T_ECHO);
}

たとえば echo だとこのような記述になっており、先ほどの話と合わせるとPHPモードに入って初めて「これはechoという命令だ」と認識される仕組みがよくわかります。 普段、当たり前のようにPHPを動かしてくれている Zend Engineの脳内 をコードレベルで覗く面白さがありました。

そして普段は絶対書くことのない(IDEありがとう) <?php タグという身近にある小さな疑問から、どのようになっているかを押し広げるのめちゃくちゃ素敵だなと思いました。 5分という短い時間でしたが、丁寧な構成とストーリー性のあるトークで、まさに肉厚なLTでした🍖

yukaさん、LT発表ありがとうございました🙌