Один из способов сделать это - установить для параметра по умолчанию значение null
, а затем проверить, был ли параметр на самом деле нулевым - если это так, определите вместо него функцию «по умолчанию».
Затем проверьте, может ли параметр вызываться или нет - если он не вызывается, вызовите исключение - в противном случае вызовите функцию!
function foo($func = null) {
// If $func is null, use default function
if ($func === null) {
$func = function() {
echo "Default!\n";
};
}
// Verify that whatever parameter was supplied is a valid closure
if (!is_callable($func)) {
throw new Exception('Invalid parameter supplied');
}
// Call the function!
$func();
}
function bar() {
foo(); // Default parameter is supposed to be here
foo(function(){
echo "Non default func param \n";
});
}
bar();
Вывод вышеупомянутого будет
По умолчанию!
Не по умолчанию func param