ホームページ > バックエンド開発 > PHPチュートリアル > PHP関数パラメータの型検証をカスタマイズするにはどうすればよいですか?

PHP関数パラメータの型検証をカスタマイズするにはどうすればよいですか?

王林
リリース: 2024-04-10 15:15:02
オリジナル
956 人が閲覧しました

PHP で関数パラメーターの型検証をカスタマイズすると、パラメーターの型を強制して期待値と一致するようにすることができるため、コードの堅牢性が向上します。これは次の方法で実現できます。 型ヒント: 関数パラメータの予期される型を宣言します。型が一致しない場合は例外がスローされます。型変換: settype 関数または演算子を使用して、変数を指定された型に変換します。型推論: PHP は、値を割り当てるときなどに、変数の型を自動的に推論します。カスタム検証: 特定のタイプ (日付など) を検証するカスタム検証関数を作成します。実践的なケース: 名前検証機能を使用したカスタム検証の使用法を示し、名前の長さと形式が要件を満たしていることを確認します。

如何自定义 PHP 函数参数的类型验证?

PHP 関数パラメータの型検証をカスタマイズする方法

PHP では、関数パラメータの型検証により、渡されるパラメータの型を強制できます。期待どおりであることを確認するために。これは、コードの堅牢性と信頼性を向上させるのに役立ちます。

型ヒント

PHP 7.0 では型ヒントが導入され、関数パラメーターの予期される型を宣言できるようになりました。組み込み型を使用することも、独自のクラスを作成することもできます。

function sum(int $num1, int $num2)
{
    return $num1 + $num2;
}
ログイン後にコピー

受信パラメータが宣言された型と一致しない場合、PHP は TypeError 例外をスローします。

型変換と型推論

PHP は型変換と型推論をサポートしています:

  • ##型変換: Use settype関数またはキャスト演算子は、変数を指定された型に変換します。
  • 型推論: 値を割り当てるときなど、場合によっては、PHP は変数の型を推論できます。
  • // 类型转换
    $int = (int) '10';
    
    // 类型推断
    $array = [1, 2, 3];
    ログイン後にコピー
カスタム型検証

組み込み型では満たせない要件については、カスタム検証関数を作成できます。

function validateDate(string $date): bool
{
    if (preg_match('/^[0-9]{4}-[0-1][0-9]-[0-3][0-9]$/', $date)) {
        return true;
    }

    return false;
}

function formatDate(string $date)
{
    if (!validateDate($date)) {
        throw new InvalidArgumentException('Invalid date format.');
    }

    //...
}
ログイン後にコピー

実用的なケース

次は、ユーザーが入力した名前を検証する関数です:

function validateName(string $name): void
{
    if (strlen($name) < 3 || strlen($name) > 25) {
        throw new InvalidArgumentException('Name must be between 3 and 25 characters long.');
    }

    if (!preg_match('/^[a-zA-Z ]+$/', $name)) {
        throw new InvalidArgumentException('Name must contain only letters and spaces.');
    }
}
ログイン後にコピー
この関数は、カスタム検証を使用して、受信した名前が要件を満たしていることを確認します。 。

利点

カスタム型検証には次の利点があります。

    関数パラメータの有効性を確保します
  • コードの可読性と可読性を向上させます。保守性
  • 強制的な入力によるエラーの削減
  • 単体テストとテスト駆動開発の促進

以上がPHP関数パラメータの型検証をカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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