Я понимаю, что могу настроить функцию PHP для принятия необязательных параметров.
Однако, если я пишу свою функцию как обертку для другой функции, которая сама принимает необязательные параметры, я не знаю, есть ли удобный способ сделать это.
Я рассматриваю написание неуклюжий код, как:
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 в качестве параметра была бы ТОЛЬКО ОДНОЙ и той же, что и передача отсутствующего параметра, это было бы достаточно просто, но я нигде не нашел этого записанного.
Ты можешь использовать 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 или выше
Мне кажется, что если я гарантирую, что версия PHP, которую я использую, будет 5.6 или выше, я могу сделать это очень просто, используя новый токен ….
Поскольку я в состоянии форсировать это обновление на наших серверах, думаю, я пойду по этому пути.