これは、asumikam #phpcon_odawara Advent Calendar 2025の2日目の記事です🎄
スライド
感想

いまむらさんが低レイヤのことを話してないのが新鮮だ...*1と思いつつ、どの方面の発表もいけるんだな〜すげえ〜というのが最初に出た感想でした。
トークは大きく分けて2部構成となっており、前半は8.x系で入った機能の総おさらいの時間。 今見れば手元で馴染んでいるものばかりなので、ゆるやかなおさらいとなってこれはこれで面白かったです。
PHP8.1で追加されたFinalクラス定数は自分にとって大変思い出深いです。 「ここは定数使おうね」とレビューで指摘した時に、新卒の子に「でも、この定数上書きできますよね?使う意味なくないですか?」と言われて「ソッスネ.......」となった思い出があります。 あの時にPHP8.1が手元にあれば......という気持ちになりました。
紹介されていたのであんまり使ってないな〜と思ったのはPHP8.3で追加された #[\Override] ですね。
あんまり継承前提のクラスを使ってないからかもです。
とはいえ、Attributeは本当に手に馴染んだな〜、主にPHPUnitと触れ合う時にAttributeを使うことが多いような気がします。
かつてのDocCommentで頑張って書くやり方はもう忘れてしまいました。
後半は8.x系時代のクラス設計をどうするか、というお話でした。 基本的には「わかる〜〜〜」みたいな話だらけでした。基本イミュータブルでいようね、みたいな力学がPHPでも働いている感じがあります。
もうちょっと深掘りしてききたいな〜と思ったのは「クラスは原則final」の部分で、これだと、モック・スタブ化できなくてテスト書く時辛いのでは...?と思いを馳せました。 実際、外部通信をするようなライブラリのクラスがfinalになっており、モック・スタブ化できなくて辛い!!となった経験があります。
いまむらさんにきいてみたところ、「モック化する可能性があるならすべてinterfaceを切って、そのクラスに直接依存させないようにします」とのことでした。 なるほどたしかに。清く正しい回答が返ってきて、自分が普段からちゃんとinterface切ってないことに気づけましたw
PHP8.4の目玉機能であるプロパティフックに対する「プロパティフック考」もいまむらさんのスタンスが反映されていてめちゃくちゃ良かったです。 最近のおニュ〜な話題で言うと2025/11/20に出たPHP8.5でもプロパティフックはやや進化を遂げていますが、こういう使い方!とバチっと決まるのはもう少し後のバージョンからなのかもしれません。
理路整然としていてスッと入ってくるトークで、とてつもなく良かったです。 発表ありがとうございました!
ぷろも〜しょん
PHPカンファレンス小田原2026のトークを募集しています! 2025/12/19 23:59:59 までです。投稿お待ちしてます。
とはいえ、本日(付近)はPHPerKaigiのトーク募集の締切なので、CfPまだだぜという方は先にこちらへGo!!!💨
*1:最近はそっち方面をよく見ていたので