天国でもあり地獄のようなPHPの変数事情
PHPは昔から良くも悪くも変数の型に対して寛容でした。いきなり型宣言をせずに使えますし、なんなら
$hoge .= “宣言しなくても追加”;
ですら怒られないくらいでした。
ただ、PHP5あたりからうっすらとまずいよねってことになり、PHP5系では非推奨、PHP8以降になると、warningとしてしっかりとアラートが出るようになりました。
(あくまでwarningなのでエラー非表示にすれば処理自体は止まらない)
これによりバージョンアップすることでエラーメッセージが頻発するのですが、今後のことを考えると仕方ないなという感じです。
関数も型宣言する時代
関数についてもほかの言語からすると「当たり前だろ」ということでしたが、実際のところPHPはそのあたりも寛容でした。例えば「数字をカンマ区切りにし、最後に円をつける関数」を作って説明します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/** * 数字をカンマ区切りにし、最後に「円」を付ける関数 * * @param float|int $number フォーマットする数字 * @return string フォーマットされた文字列 */ function formatCurrencyYen($number) { // 数字をカンマ区切りにフォーマットする $formattedNumber = number_format($number); // フォーマットした数字に「円」を付けて返す return $formattedNumber . '円'; } |
めちゃくちゃシンプルですが、こんな感じでしょうか。
もちろんこれで問題はないのですがPHP7以降は型宣言する事ができるので、簡単なのでやっちゃいましょう
1 2 3 4 5 6 7 8 9 10 11 12 13 |
/** * 数字をカンマ区切りにし、最後に「円」を付ける関数 * * @param float|int $number フォーマットする数字 * @return string フォーマットされた文字列 */ function formatCurrencyYen(float|int $number): string { // 数字をカンマ区切りにフォーマットする $formattedNumber = number_format($number); // フォーマットした数字に「円」を付けて返す return $formattedNumber . '円'; } |
戻り値がない場合はvoidにすれば大丈夫です。
VS CodeのようなIDEを使うと、自動的に型宣言を認識してくれるので、おかしな記述があれば警告を出してくれます。
おそらくPHPのバージョンアップに伴い、型宣言をしないとワーニングが発生するということがでてくるかもしれないので、少しめんどくさいですが型宣言の手癖をつけておくのもいいかもしれないですね