PHP も型宣言に取り組み始めました。PHP7 では型宣言の機能が追加されました。次の記事では、PHP の型宣言の機能を理解し、戻り値の型宣言の落とし穴について説明します。みんなに役立つ!
最近、私は PHP7 の新機能を研究していて、PHP も型宣言を使い始めていることに気付きました。そうすることの利点は明白です。プログラムの実行速度を向上させます。
この新機能の紹介から始めましょう:
デフォルトでは、すべての PHP ファイルは弱い型チェック モードになっています。
PHP7 では型宣言の機能が追加されており、型宣言には次の 2 つのモードがあります:
スカラー型宣言構文形式:
declare(strict_types=1);
strict_types の値:
#強制モード (デフォルト モード)<?php
function sum(int ...$ints)
{
return array_sum($ints);
}
print(sum(1, '2', 3.1));
?>
分析: 文字列型 '2' を整数型 2 に変換し、浮動小数点型 3.1 を整数型 3 に変換し、それらを加算して結果 6 を取得します。
Strict モード<?php
declare(strict_types=1);
function sum(int ...$ints)
{
return array_sum($ints);
}
print(sum(1, '2', 3.1));
?>
戻り値の型宣言PHP7 では、関数の戻り値の型を指定する戻り値の型宣言のサポートが追加されています。
宣言できる戻り値の型は次のとおりです:
string私が踏んだ穴I本当にここにいます 穴をくぐると、新しいバージョンのphpstormでは戻り値の型に応じて戻り値の型宣言を追加するように案内するプロンプトコードが表示されるので追加しました。しかし、その後ビジネスの変更やコードの最適化により、戻り値のみを変更しました (たとえば、以前は配列を返しましたが、変更後は int を返しました)。戻り値の型宣言を変更するのを忘れていました (結局のところ、 PHP の弱い言語型に長年慣れていると、例外がスローされ、エラーが発生します。これが私が踏んだ落とし穴です。皆さん、使用する際には注意してください。
思考
GO 言語では、戻り値の型と戻り値の型宣言が同じであれば、上記の問題は発生しません。コンパイルが失敗すると、コンパイル中にエラーが報告されます。PHP は弱い型指定言語であるため、戻り値の型宣言などの最適化が行われていますが、言語を実行する前にコンパイルする必要はなく、直接リリースして実行できます。 「コンパイルアラーム」が発生すると、PHPは実行中に直接例外をスローします。
#
<?php declare(strict_types=1); function returnIntValue(int $value): int { return $value; } print(returnIntValue(5)); ?>
<?php
declare(strict_types=1);
function returnIntValue(int $value): int
{
return $value + 3.0;
}
print(returnIntValue(1));
?>
注: 定義します。戻り値の型が void の関数 null を返す場合でも、戻り値は存在しません。
戻り値が void 型として宣言されているメソッドは、return ステートメントを完全に省略するか、空の return ステートメントを使用する必要があります。
Example
<?php function exchange(&$left, &$right) : void { if ($left === $right) { return; } $tmp = $left; $left = $right; $right = $tmp; } $a = 1; $b = 2; var_dump(exchange($a, $b), $a, $b);
null int(2) int(1)
##元のアドレス: https://juejin.cn/post/7062942459247984648
著者: Wang Zhongyang Go》推奨学習: 「
PHP ビデオ チュートリアル」
以上がPHP7+ では型宣言もサポートされているので、この機能についてお話しましょう。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。