Add defaults() function
This commit is contained in:
parent
a86ffd878d
commit
49eda1e154
45
boot.php
45
boot.php
|
@ -572,6 +572,51 @@ function x($s, $k = null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the provided variable value if it exists and is truthy or the provided
|
||||||
|
* default value instead.
|
||||||
|
*
|
||||||
|
* Works with initialized variables and potentially uninitialized array keys
|
||||||
|
*
|
||||||
|
* Usages:
|
||||||
|
* - defaults($var, $default)
|
||||||
|
* - defaults($array, 'key', $default)
|
||||||
|
*
|
||||||
|
* @brief Returns a defaut value if the provided variable or array key is falsy
|
||||||
|
* @see x()
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
function defaults() {
|
||||||
|
$args = func_get_args();
|
||||||
|
|
||||||
|
if (count($args) < 2) {
|
||||||
|
throw new BadFunctionCallException('defaults() requires at least 2 parameters');
|
||||||
|
}
|
||||||
|
if (count($args) > 3) {
|
||||||
|
throw new BadFunctionCallException('defaults() cannot use more than 3 parameters');
|
||||||
|
}
|
||||||
|
if (count($args) === 3 && !is_array($args[0])) {
|
||||||
|
throw new BadFunctionCallException('defaults($arr, $key, $def) requires an array as first parameter');
|
||||||
|
}
|
||||||
|
if (count($args) === 3 && is_null($args[1])) {
|
||||||
|
throw new BadFunctionCallException('defaults($arr, $key, $def) $key is null');
|
||||||
|
}
|
||||||
|
|
||||||
|
$default = array_pop($args);
|
||||||
|
|
||||||
|
if (call_user_func_array('x', $args)) {
|
||||||
|
if (count($args) === 1) {
|
||||||
|
$return = $args[0];
|
||||||
|
} else {
|
||||||
|
$return = $args[0][$args[1]];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$return = $default;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Returns the baseurl.
|
* @brief Returns the baseurl.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue