忍者ブログ

STEP UP BLOG

Home > ブログ > > [PR] Home > ブログ > php > PHPの保守性を高めるためのタイプヒンティング

PHPの保守性を高めるためのタイプヒンティング

PHPは語弊を恐れずに言えば、なんでもできる言語です。
変数にはどんな値でも入れられます。
例えばC言語で
int x = 1;
x = "こんにちは";
はコンパイルエラーが出ます。しかしPHPは、
$x = 1
$x = array(1,2,3)
でもエラーが出ません。
つまり変数の中に何が入っていても文句は言われないのです。

そんなPHPで関数に何か値が渡されてきたとします。
引数で渡された値が文字列なのか配列なのか、よくやるチェックに
function f($x)
{
  if (is_array($x)) {
     // 配列用の処理
  } else {
     // 配列以外の処理
  }
}

みたいなのがあると思います。
チェックしないで$x[0]とかすると、$xが文字列でもエラーは出ません(文字列の1文字目が返される)。
これは正常実行されるので、その後でこれが元のエラーが出ても原因がわかりづらい。
そこでタイプヒンティングです。
function f(array $x)
{
  // 配列の処理
}

とすることで、引数として配列が必ず渡ってくるものと宣言します。
配列が来なかったらエラーが発生します。
これで予測不可能なエラーから予測可能なエラーになりました(^^)b
タイプヒンティングにはクラスも指定できるので、特定のクラスで渡されてこなかったらエラーみたいなのもできます。
後から読む人もこれで、どんな型の値が渡されてくる関数かある程度予測でき保守性も上がるのでどんどん活用していきましょう。


まあ、基本的に配列型かスカラー型のどちらでも送られてくる可能性のある関数は実装上よろしくないなと思っています。。
PR

Comment0 Comment

Comment Form

  • お名前name
  • タイトルtitle
  • メールアドレスmail address
  • URLurl
  • コメントcomment
  • パスワードpassword

PAGE TOP