ホームページ >バックエンド開発 >PHPチュートリアル >PHP でdeclare(strict_types==) を使用する理由 – 簡単なヒント

PHP でdeclare(strict_types==) を使用する理由 – 簡単なヒント

PHPz
PHPzオリジナル
2024-08-12 18:43:19846ブラウズ

Why use declare(strict_types=in PHP – Fast tips

このチュートリアルでは、declare(strict_types=1) の意味、PHP 開発者がこれを使用する必要がある理由、および使用しない理由を検討し、その重要性を示す例を示します。

この設定は、PHP の緩やかな型指定の性質と、Java などの他の一般的な言語によって導かれる厳密に型指定された機能の需要の高まりを考慮して行われています。

どちらの入力戦略 (緩いタイプと厳密なタイプ) にも長所と短所があります。まず、その意味を理解しましょう。

緩やかに型付けされた言語

動的型付け言語とも呼ばれる緩やかに型付けされた言語は、コンパイル時に変数が特定のデータ型にバインドされないプログラミング言語です。実行中に変数にどのようなデータ型が含まれるかを事前に宣言する必要はありません。

変数のデータ型は、変数が保持する値に基づいて決定され、実行時に変更される可能性があります。

PHP は基本的に緩やかに型付けされた言語なので、これを使用して例を書くことができます。

$a = "hello";
$a = 1; 
// No errors. The content of the variable is changed from string to int.

緩やかに型指定された言語では、暗黙的な型変換が許可されることがよくあります。つまり、操作を容易にするために、ある型から別の型にデータを自動的に変換する可能性があります。この動作により柔軟性が向上しますが、機能エラーが発生する可能性も高くなります。

厳密に型指定された言語

厳密に型指定された言語は、静的型指定言語とも呼ばれ、コンパイル時に変数を特定のデータ型で明示的に宣言する必要があるプログラミング言語です。

変数のデータ型は、一度定義されると、その存続期間中は変更できません。厳密に型指定された言語では、暗黙的な型変換が実行されません。つまり、異なる型の変数間で演算を行うと、通常はコンパイル エラーが発生します。

Java で例を書くことができます:

public class CompileError {
    public static void main(String[] args) {

        int x = 15;
        x = "Valerio";

    }
}

宣言(strict_types=1)とは何ですか?

declare(strict_types=1) は、特定の PHP ファイルまたはコード ブロック内の関数およびメソッドの引数と戻り値の厳密な型チェックを強制する PHP のディレクティブです。厳密な型チェックを有効にすると、PHP は関数の引数と戻り値のデータ型が宣言された型と正確に一致することを保証します。 Java とまったく同じ方法です。

厳密な型付けを有効にするには、この宣言を PHP ファイルまたはコード ブロックの先頭 (他のコードの前) に配置します。

厳密な型チェックを有効にするための基本的な構文は次のとおりです。

<?php

declare(strict_types=1);

function speak(string $name): string 
{
    return "Hello {$name}!";
}

speak(1); // This fires the error "Uncaught TypeError"
speak("Valerio"); // This prints "Hello Valerio!"

なぜdeclare(strict_types=1)を使うのか?

厳密な型付けを強制すると、特定のシナリオでコードの信頼性が大幅に向上します。

厳密な型付けは、実行時エラーや不正な動作につながる可能性のある予期しない型関連の問題を防ぐのに役立ちます。これにより、常に期待どおりのデータ型を操作できるようになります。

たとえば、2 つの数値を加算する関数について考えてみましょう。

function add($a, $b) 
{
    return $a + $b;
}

$result = add(5, '10'); // Without strict typing, this is allowed.
echo $result; // Output: 15

厳密な型がないと、PHP は文字列「10」を整数に強制変換し、意図したものと異なる結果を生成する可能性があります。

declare(strict_types=1) あり:

declare(strict_types=1);

function add(int $a, int $b) 
{
    return $a + $b;
}

$result = add(5, '10'); // Fatal error: Uncaught TypeError

厳密な型が有効になっていると、PHP は TypeError をスローして関数の実行を阻止し、型の安全性を確保します。

どの戦略を選択しますか?

元の記事に進む --> https://inspector.dev/why-use-declarestrict_types1-in-php-fast-tips/

以上がPHP でdeclare(strict_types==) を使用する理由 – 簡単なヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。