在PHP中传递可选参数

时间:2015-12-17 18:10:53

标签: php function parameters optional

我知道我可以设置一个PHP函数来接受可选参数。

但是,如果我将我的函数编写为另一个本身采用可选参数的函数的包装器,我不知道是否有一种简单易用的方法。

我正在考虑编写像clunky这样的代码:

function doBindValue__($stmtEE, $placeholder, $value, $type = NULL)
{
     /**
      * Now IN FACT the interface to bindValue is specified to use PDO::PARAM_STR as the default
      *  so I could use it as MY default above, 
      *  but that feels like cluncky assuming-too-much
      *  since I don't own that specification and it could change later ( I suppose ).
      */

    $GLOBALS[ "PDOFailedOperation" ] = "bindValue";

    if (is_null($type))
    {
        $stmtEE->bindValue($placeholder, $value);
    }
    else
    {
        $stmtEE->bindValue($placeholder, $value, $type);
    }
}

如果我知道传递一个NULL作为参数完全相同,因为它传递了一个缺失的参数,那就很容易了,但我没有发现在任何地方写下来。

2 个答案:

答案 0 :(得分:0)

您可以使用func_get_argscall_user_func_array PHP函数。

有关功能的帮助,请参阅:

http://php.net/manual/en/function.func-get-args.php

http://php.net/manual/en/function.call-user-func-array.php

您的代码段可以使用以下功能重新编写:

function doBindValue__($stmtEE, $placeholder, $value, $type = NULL)
{

    $GLOBALS[ "PDOFailedOperation" ] = "bindValue";

    return call_user_func_array(array($stmtEE, 'bindValue'), func_get_args());
}

对于php 5.3或更高版本

答案 1 :(得分:0)

在我看来,如果我确保我使用的PHP版本是5.6或更高版本,我可以使用新的....令牌非常简单。

由于我能够在我们的服务器上强制升级,我想我会这样做。