会社でコードレビューをして貰っているときに ClassName::class という表記のコメントを貰った。え?「::class」ってなに?と思って調べてみると、PHP 5.5 からこの記法が追加されていた。
PHP 5.5 以降では、class キーワードでクラス名の解決ができるようになりました。 ClassName クラスの完全修飾名を文字列で取得するには、 ClassName::class とします。 これは、 名前空間つきのクラスと組み合わせると特に便利です。
これを知ってなるほど!!!と思って、さっそく使い始めた。
例えば、Phake でモックを作るときに、今まではこんな風に書いていた。
これを ::class で書き換えると、こうなる。
この例だと、モックを作っているのは2個だけなんだけど、実戦ではもっと多くのモックを作ったりもしているので、長い namespace が付いたクラス名がたくさん並ぶよりもかなりスッキリする。
Phake::mock() の引数がスッキリするのもさることながら、利用するクラスが use に並ぶので、何を利用しているのかが明確になって良いなぁと思う。
新しいバージョンで良くなっているものを積極的に使っていくのは大事だねぇ。