1

そのため、PHP 7 にはスカラー型ヒントが含まれるようになり (w00t!)、PHP の設定に応じて、型ヒントを厳密または非厳密にすることができます。Laracasts は定義、IIRC を使用してこれを設定します。

コードの設定を任意に変更せずに、1 つのファイル (数学ライブラリなど) のスカラーに厳密な型ヒントを設定すると同時に、他の場所で厳密でないものを使用する方法はありますか?

言語設定をいじらないようにしてバグの発生を避けたいのですが、このアイデアは気に入っています。

4

1 に答える 1

5

実際、この機能はそのように機能するように特別に設計されています。

declare(strict_types=1);は言語設定や構成オプションではなく、ファイルごとの特別な宣言であり、namespace ...;. 使用するファイルにのみ適用され、他のファイルには影響しません。

たとえば、次のようになります。

<?php // math.php

declare(strict_types=1); // strict typing

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

// this file uses strict typing, so this won't work:
add("1", "2");

<?php // some_other_file.php

// note the absence of a strict typing declaration

require_once "math.php";

// this file uses weak typing, so this _does_ work:
add("1", "2");

リターン入力も同じように機能します。declare(strict_types=1);ファイル内の関数呼び出し(宣言ではない) とreturnステートメントに適用されます。ステートメントがない場合declare(strict_types=1);、ファイルは「弱い型付け」モードを使用します。

于 2015-12-08T21:15:48.003 に答える