1. ホーム
  2. php

[解決済み】タイプヒンティング使用時にNULL引数を渡せない

2022-04-07 20:46:52

質問

次のようなコードです。

class Type {

}

function foo(Type $t) {

}

foo(null);

が実行時に失敗しました。

PHP Fatal error: foo()に渡される引数1はNULLであってはなりません。

なぜ他の言語と同じようにnullを渡すことが許されないのでしょうか?

解決方法は?

PHP 7.1 以降 (2016年12月2日リリース)

変数を明示的に宣言することで null この構文で

function foo(?Type $t) {
}

という結果になります。

$this->foo(new Type()); // ok
$this->foo(null); // ok
$this->foo(); // error

つまり、オプションの引数が必要な場合は、次のような規約に従えばよいのです。 Type $t = null 一方、引数を作る必要がある場合は null とその型は、上の例のようにすればよい。

もっと読む ここで .


PHP 7.0 またはそれ以前

のようなデフォルト値を追加する必要があります。

function foo(Type $t = null) {

}

そうすれば、NULL値を渡すことができます。

に関するマニュアルのセクションに記載されています。 型宣言 :

宣言を受け入れるようにすることができます NULL の値は、パラメータのデフォルト値が NULL .