zennでも同じ記事を投稿しています📮
zennではフロントエンドのことも含め、いろいろ投稿しているのでぜひご覧ください👋
以前、zennでPHP の型について記事を書きました。今回は型を強制できるというおはなしです。
strict モードについて
strict モードを有効にすることで厳密な型宣言ができます。
strict モードが有効でないとき、エラーが出ずに実行できてしまうことがあります。1
有効にするには declare 文 に strict_types=1 をセットします。
例
<?php
// strictモードの有効化
declare(strict_types=1);
function sum(int $a, int $b) {
return $a + $b;
}
// int(3) という結果が得られる
var_dump(sum(1, 2));
// 引数がintでないためエラーがでる
var_dump(sum(1.5, 2.5));
?>
注意
declare 文では下記のように変数や定数をセットできません
<?php
const STRICT_VALUE = 1;
// これは無効
declare(strict_types=STRICT_VALUE);
?>
strict モードを有効にする必要性
strict モードを有効にしないと、意図しない挙動を起こすことがあります。
たとえば、整数同士の足し算のみ行いたい関数に対して引数として小数を与えたときにエラーが出ず実行されてしまいます。
<?php
function sum(int $a, int $b) {
return $a + $b;
}
// int(3) という結果が得られる
var_dump(sum(1, 2));
// エラーが出ずにint(3) という結果が得られる
var_dump(sum(1.5, 2.5));
?>
参考
-
'1'+2 といった「数値に変換できる文字列+数値」に対して、計算結果(この例では 3)が出力されます。 ↩