そのため、PHP 7 にはスカラー型ヒントが含まれるようになり (w00t!)、PHP の設定に応じて、型ヒントを厳密または非厳密にすることができます。Laracasts は定義、IIRC を使用してこれを設定します。
コードの設定を任意に変更せずに、1 つのファイル (数学ライブラリなど) のスカラーに厳密な型ヒントを設定すると同時に、他の場所で厳密でないものを使用する方法はありますか?
言語設定をいじらないようにしてバグの発生を避けたいのですが、このアイデアは気に入っています。
そのため、PHP 7 にはスカラー型ヒントが含まれるようになり (w00t!)、PHP の設定に応じて、型ヒントを厳密または非厳密にすることができます。Laracasts は定義、IIRC を使用してこれを設定します。
コードの設定を任意に変更せずに、1 つのファイル (数学ライブラリなど) のスカラーに厳密な型ヒントを設定すると同時に、他の場所で厳密でないものを使用する方法はありますか?
言語設定をいじらないようにしてバグの発生を避けたいのですが、このアイデアは気に入っています。
実際、この機能はそのように機能するように特別に設計されています。
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);
、ファイルは「弱い型付け」モードを使用します。