PHP 7.1では、次の関数が呼び出されたとき:
private function dostuff(?int $limit = 999) { }
そのような構文で:
dostuff(null);
$ limitの値はnullになります。したがって、$limit
の値が明示的にnull
に設定されたと言えます。これを克服する方法はありますか?つまりnull値(つまり、値の欠如)が検出された場合、暗黙的であるか明示的であるかにかかわらず、デフォルトを使用しますか?
ありがとう
いいえPHPには、「nullの場合はデフォルトにフォールバックする」オプションはありません。代わりに次のようにする必要があります。
_private function dostuff(?int $limit = null) {
// pre-int typehinting I would have done is_numeric($limit) ? $limit : 999;
$limit = $limit ?? 999;
}
_
あるいは、何かを行うための適切な値がない場合は、dostuff()
またはdostuff(999)
を実行するようにしてください。
注:メソッドパラメータのデフォルト値を取得するためのリフレクションもありますが、多すぎるようです。
ただし、次の方法があります。
_ $m = new ReflectionFunction('dostuff');
$default = $m->getParameters()[0]->getDefaultValue();
dostuff($default);
_