ホームページ  >  記事  >  バックエンド開発  >  php7で強い型モードを有効にする方法

php7で強い型モードを有効にする方法

醉折花枝作酒筹
醉折花枝作酒筹転載
2021-06-01 09:17:092802ブラウズ

この記事では、php7 で強い型モードを有効にする方法を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

php7で強い型モードを有効にする方法

php が弱い型指定のプログラミング言語であることはわかっていますが、php7 は変更され、強い型指定モードを有効にするコードをサポートできるようになりました。

php7 は強い型モードをオンにします。これが、php7 が以前のバージョンに比べて効率が向上した理由の 1 つです。最初に 2 つの例を見てみましょう

First

<?php
function sum($a,$b):float
{
        return $a+$b;
}
var_dump(sum(1,2));
var_dump(sum(1,2.5));
?>

出力結果は次のとおりです。

float(3) float(3.5)

次に、strong type モードを追加します。

<?php
define(strict_types=1);//注意这一句必须要放在第一行,而且顶格
function sum($a,$b):float
{
        return $a+$b;
}
var_dump(sum(1,2));
var_dump(sum(1,2.5));
?>

出力結果は次のとおりです。

float(3) float(3.5)

ここからは違いがないようです。 >float 型変換は許可されます。

別の例を見てみましょう:

function sum(int $a,int $b):float
{
        return $a+$b;
}
var_dump(sum(1,2));
var_dump(sum(1,2.5));

出力結果は次のとおりです:

float(3) float(3)

これは、2.5 が強制的に int 型に変換されるため、値は 2, 1 になります。 2=3、結果に問題はありませんが、一般に、この暗黙的な変換は理解するのが非常に難しく、期待した結果にならない可能性があります。

そこで、出力結果を確認するために強い型モードを追加します。コードは次のとおりです:

<?php
declare(strict_types=1);
function sum(int $a,int $b):float
{
        return $a+$b;
}
var_dump(sum(1,2));
var_dump(sum(1,2.5));
?>

出力結果は次のとおりです:

float(3)
Fatal error: Uncaught TypeError: Argument 2 passed to sum() must be of the type integer, float given, called in /home/www/learn.php on line 8 and defined in /home/www/learn.php:3 Stack trace: #0 /home/www/learn.php(8): sum(1, 2.5) #1 {main} thrown in /home/www/learn.php on line 3

ここでわかります。強型モードが有効である sum(1,2.5) 文に誤りがある 2.5 は int 型ではないため、プログラムでエラーが発生する

この状況が発生した場合は、例外をキャッチしてこのエラーをキャッチしましょう

コードは次のとおりです:

<?php
declare(strict_types=1);
function sum(int $a,int $b):float
{
        return $a+$b;
}
try {
var_dump(sum(1,2));
var_dump(sum(1,2.5));
}
catch(TypeError $e) {
        echo &#39;Error:&#39;.$e->getMessage();
}
?>

出力結果は次のとおりです:

float(3) 
Error:Argument 2 passed to sum() must be of the type integer, float given, called in /home/www/learn.php on line 9

推奨される学習: php ビデオ チュートリアル

以上がphp7で強い型モードを有効にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。