PHP で関数パラメータの厳密な型チェックを実装するにはどうすればよいですか?

WBOY
リリース: 2024-04-10 15:54:02
オリジナル
1156 人が閲覧しました

PHP 関数パラメータの型を厳密にチェックすることで、渡されたパラメータが宣言された型と一致していることを確認できます。 declare(strict_types=1) によって有効にすると、関数パラメータは指定された型と一致する必要があり、一致しない場合は TypeError 例外がスローされます。厳密なチェックでは、基本型 (int、float)、複合型 (オブジェクト、配列)、共用体型 (int|string)、およびオプションの型 (?int) がサポートされており、コードの堅牢性が向上し、間違った型パラメーターが渡されるのを防ぎます。

PHP 函数参数类型严格检查如何实现?

PHP 関数のパラメーターの型の厳密なチェックを理解する

PHP 関数のパラメーターの型チェックとは、実際に渡されたパラメーターの型が関数と一致するかどうかをチェックすることを指します。関数が呼び出される 宣言されたパラメータの型が一貫しているプロシージャ。コードの堅牢性は、関数に渡されるパラメーターが期待どおりであることを厳密にチェックすることで向上できます。

構文

PHP 7.0 以降では、Declare ステートメントを使用して関数パラメーターの型を厳密にチェックできます:

declare(strict_types=1);

function add(int $a, int $b) {...}
ログイン後にコピー

Pass strict_types=1 strict モードが有効であることを宣言した後、関数 add は 2 つの整数型パラメータを渡す必要があります。そうでない場合は、TypeError 例外がスローされます。

パラメータ タイプ

PHP は、次の基本タイプと複合タイプの厳密なチェックをサポートしています:

  • 基本タイプ: int float boolstringnull
  • ##複合型:

      オブジェクト型:
    • object または Class
    • 配列型:
    • array
    • 共用体型:
    • int|string
    • オプションのタイプ:
    • ?int
  • #実際のケース

#シナリオ:

関数 calculateArea

を定義して、幾何学的図形の面積を計算します。さまざまなグラフィックス タイプに応じて、さまざまなパラメータを渡す必要があります:

function calculateArea($shape, $params) {...}
ログイン後にコピー
パラメータ エラーを防ぐために型チェックを使用します:

declare(strict_types=1);

function calculateArea(string $shape, array $params): float {...}
ログイン後にコピー
strict_types## を通じて宣言および明確化します。 # パラメータのタイプにより、間違ったタイプのパラメータを渡すことがなくなります。例:

calculateArea(123, []); // 抛出 TypeError 异常
ログイン後にコピー

ユニオン型を使用して柔軟性を向上させる:

function calculateArea(string $shape, int|float $radius): float {...}
ログイン後にコピー

ユニオン型を使用すると、関数はさまざまな状況に応じてさまざまなタイプのパラメータを受け取ることができます。たとえば、円または正方形の面積を計算するには:

calculateArea('circle', 5);
calculateArea('square', 10);
ログイン後にコピー
注意点

Strict モードは既存のコードには影響せず、新しく定義された関数にのみ影響します。

例外は、実際のパラメータの型が宣言された型と一致しない場合にのみスローされます。
  • 関数が
  • null
  • 値を返せるようにする場合は、オプションの型
  • ?
  • を使用できます。 厳密モー​​ドが有効な場合、オプションのパラメーターを含む関数のすべてのパラメーターに対して型を明示的に指定する必要があります。

以上がPHP で関数パラメータの厳密な型チェックを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート