php - 当为可空函数参数指定 `null` 时如何使用默认值?

标签 php null default-value php-7.1

在 PHP 7.1 中调用以下函数时:

private function doStuff(?int $limit = 999) { }

语法如下:

doStuff(null);

$limit 的值变为 null。所以我猜可以说 $limit 的值被显式设置为 null

有什么办法可以克服这个问题吗? IE。当遇到空值(即缺少值)时使用默认值,无论是隐式还是显式?

最佳答案

没有 PHP 没有“如果为 null 则回退到默认值”选项。你应该这样做:

private function dostuff(?int $limit = null) {
    // pre-int typehinting I would have done is_numeric($limit) ? $limit : 999;
    $limit = $limit ?? 999;
}

或者,当您对做某事没有合理的值(value)时,请确保您执行 dostuff()dostuff(999)

注意:也有反射获取方法参数的默认值,但这似乎太多了。

但是方法是这样的:

 $m = new ReflectionFunction('dostuff');
 $default = $m->getParameters()[0]->getDefaultValue();
 dostuff($default);

关于php - 当为可空函数参数指定 `null` 时如何使用默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45320353/

相关文章:

java - 在表中插入记录之前如何处理java中的非空字段

php - 使用 swift ( php, json, swift ) 将图像上传到服务器

php - 在PHP中从MySQL数据库获取数据,解析错误: syntax error,意外 '<'

php - 是否可以按找到的匹配项数量对与 REGEX 匹配的 SQL 查询进行排序?

c# - 什么是NullReferenceException,如何解决?

php - 无法获取 PHP 表单以将日期时间保存为 NULL

c++ - 为什么函数的默认值为1?

php - 获取数据单表形式父子查询pos_parent_id表作为子id

c++ - 结构体是如何存储在内存中的?

function - 具有未知默认参数的 Scala 函数调用