エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【PHP】クラスをデバッグするReflectionClassとか【767日目】

クラスについて詳しく知りたい

クラス自体をよく知りたい。

このクラスは一体どういう状態なのだろう。
どんな値を持っているのだろう。

テストをしてるときに、正規の方法では取得できないprivateのフィールド値等、今このクラスはどうなってるのかとか。
(めったにそこまでしなきゃいけないことないけど。その時にはクラス構成やテスト考え直すほうが良いけど)

Reflection

PHPには、デバッグとかに使えるリフレクションって機能があります。

公式ドキュメント

https://www.php.net/manual/ja/book.reflection.php

例えばどんなことができる?

定数の定数名とか変数を取得したり、

https://www.php.net/manual/ja/reflectionclass.getconstant.php

privateメソッドを使えるようにしたり、

https://www.php.net/manual/ja/reflectionmethod.setaccessible.php

通常じゃ出来ないことが出来ます。

通常じゃ出来ないことが出来るってことは?

諦めていたテストコードが書けたりとか、諦めてたコードが書けたりするかもしれない。

が、、、通常じゃ出来ないことをすると、様々な前提が壊れるので・・・まあ普通に考えて、普段は使わない方がいいよね/(^o^)\

頭の片隅に置いておくと良さそうな気がします。
もし、普通に現場で使うと良さそうなユースケースとかあったら、教えてくださると嬉しいです!