【问题标题】:Passing null to variadic function将 null 传递给可变参数函数
【发布时间】:2014-04-29 09:19:18
【问题描述】:

我有这个代码:

function basket_admin_tabs( $current = 'edit' ) {
    if ($current==null)
        $current='edit';

php 有没有办法将 null 识别为无参数?两次告诉函数相同的信息似乎很奇怪。

@编辑

我不知道我是否正确地表达了自己。该函数使用参数来了解要使用的选项卡。如果参数未设置或为空,我希望它是“编辑”。

【问题讨论】:

  • 现在,默认参数是edit,所以$current永远不会等于NULL,除非你将函数参数指定为NULL。只需将默认参数更改为NULL 即可?

标签: php null variadic-functions variadic


【解决方案1】:

不,null 只是作为参数的有效值。

如果 falsy 如下所示,您可以设置默认值:

function basket_admin_tabs( $current = 'edit' ) {
  $current = $current ? $current : 'edit';
}

// after php 5.3
function basket_admin_tabs( $current = 'edit' ) {
  $current = $current ?: 'edit';
}

【讨论】:

  • 不过,必须复制默认值还是很奇怪的。
  • ... 但话又说回来,这样我们至少可以在函数签名中看到真正的默认值(= 在 IDE 中)。使用null-isset 方法,它将隐藏在函数体内。
【解决方案2】:

这就够了。

/**
 * defaults to 'edit'
 * 
 * @param null $current
 */
function basket_admin_tasks($current = null)
{
    $current = ($current == null ? 'edit' : $current);
}

或者这个:

/**
 * @var string
 */
private $current = 'edit';

/**
 * @param $current
 */
public function basket_admin_tasks($current)
{
    $this->current = $current;
}

【讨论】:

    猜你喜欢
    • 2014-10-20
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多