【CakePHP3】タイプヒンティング(型宣言)の規約を読んでみた

Bake-with-CakePHP Logo

仕事でCakePHP3を触る機会が多いのだけど、関数の引数の型を指定するタイプヒンティング(型宣言)のルールってどうするのが推奨されているのかが気になったので、調べてみた。

CakePHP3ではpublicメソッドにだけ、タイプヒンティングを記述するのが推奨されている

結論から言うと、publicメソッドにだけ記述することが推奨されている。理由は型判定がコストフリーじゃないからとされている:

タイプヒンティング

実際のところ、タイプヒンティングによってどれくらいパフォーマンスが下がるのかは検証していないので何ともいえないが、10回近く型宣言されている関数を通過して100msくらいパフォーマンスが変わるのであれば確かに検討すべき事案ではある。いつか検証してみるとしよう。

 

タイプヒンティングについて率直に感じたこととしては、型宣言していればコードの可読性が上がるのが単純に便利だと思った。もしタイプヒンティングを使わずに関数内で引数の型判定をしたい場合、そのぶんだけー関数内にコードを数行足す必要があるので。また、型に違反してたらTypeErrorを吐き出して処理が止まる厳密さも、PHP自体がある程度の緩さを持っているだけに好きだったりする。

 

ちなみに、タイプヒンティングという呼び方はPHP5までのものらしく、PHPが7になった昨今では型宣言と呼ぶのが通称らしい。PHPの本家ドキュメントにそう記載されていた:

型宣言

こんな感じに、時々自分たちが使っている言語やフレームワークの仕様を読みにいくことで知見を貯めていくのは面白い。