0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PHPにおけるstrictモードを使った厳密な型宣言

Posted at

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));
?>

参考

declare
厳密な型付け

  1. '1'+2 といった「数値に変換できる文字列+数値」に対して、計算結果(この例では 3)が出力されます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?