PHP Conference Japan 2022 LT Slide
Reflection を使いこなして、オブジェクトを型安全にマッピングしよう!PHP Conference Japan 2022 - やまゆhttps://fortee.jp/phpcon-2022/proposal/51f66d0e-5bae-4902-bb63-89700407204a
View Slide
やまゆ- 札幌の PHPer(㈱インフィニットループ)- Babylon.js 勉強会- 好き: 🍶、☕、🐇、デレマス、カピバラ- 最近: 壱百満天原サロメ、スプラトゥーン3
何故LT 枠で応募した自分?
Reflection
Reflection とは?- ランタイム等で「コードそのもの」の構造を取得・改変する技術- 引数の型や名前を取得したり、 private メソッドを無理やり外で呼べる (危険)- メタプログラミングとも呼ばれる- ビジネスロジックでは使われることはほぼないが、ライブラリやFWでは重要- PHP 8 Attribute も Reflection 経由で取得できる- PHP は(大雑把に言うと)コンパイルしないので、容易に Reflection 情報を取得できる
例) json をクラスに変換したい
こういう IF だと良さそう
こういう IF だと良さそうpsalm でジェネリクス型を疑似表現!クラス名文字列とIDを指定して変換
実装例
実装例該当クラスのメタ情報を取得コンストラクタパラメータ一覧取得null は優先して処理ここでインスタンス化
- PHP では簡単に Reflection を扱える- PHP 8.1~ の型に優しい実装- データのマッピングだけでなく、コード自動生成などにも寄与する- 社内ライブラリとして共有されていることもありそう- ビジネスロジックを楽にする仕組みとして入れると良い- Reflection は いいぞ。https://gist.github.com/il-m-yamagishi/b845406086fdef32a5f794ff02eba30aReflection まとめ