我知道我可以设置一个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作为参数完全相同,因为它传递了一个缺失的参数,那就很容易了,但我没有发现在任何地方写下来。
答案 0 :(得分:0)
您可以使用func_get_args
和call_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或更高版本,我可以使用新的....令牌非常简单。
由于我能够在我们的服务器上强制升级,我想我会这样做。