En el manual de PHP, para mostrar la sintaxis de las funciones con parámetros opcionales, utilizan corchetes alrededor de cada conjunto de parámetros opcionales dependientes. Por ejemplo, para la date()
función, el manual dice:
string date ( string $format [, int $timestamp = time() ] )
Donde $timestamp
es un parámetro opcional, y cuando se deja en blanco, su valor predeterminado es el time()
valor de retorno de la función.
¿Cómo se crean parámetros opcionales como este al definir una función personalizada en PHP?
function dosomething($var1, $var2, $optionalValue = null)
Encontré esta mejor opción.Sin embargo, si necesita esta funcionalidad:
Suponiendo
$bar
que no se espera que sea un booleano, por supuesto.fuente
$bar === false
: esta es una acción que debe hacerse cuando se$bar
ha predeterminadofalse
. Esto evitará una acción incorrecta si0
se pasa, por lo que funciona: A MENOS QUE sea necesario un booleano. Como dijo Kzqai, se debe usar una solución más general$bar = null
, porque eso también se puede usar cuando los valores de $ bar son booleanos. La prueba luego se convierte enif (is_null($bar))
oif ($bar === null)
.Algunas notas que también encontré útiles:
Mantenga sus valores predeterminados en el lado derecho.
El valor predeterminado del argumento debe ser una expresión constante. No puede ser una variable o una llamada a función.
fuente
Otorgue al argumento opcional un valor predeterminado.
fuente
La función de fecha se definiría de la siguiente manera:
Por lo general, pondría el valor predeterminado de esta manera:
Sin embargo, solo los literales son argumentos predeterminados válidos, razón por la cual utilicé
null
como argumento predeterminado en el primer ejemplo, no$timestamp = time()
, y lo combiné con una comprobación nula. Los literales incluyen matrices (array()
o[]
), booleanos, números, cadenas ynull
.fuente
Si no sabe cuántos atributos deben procesarse, puede usar el token de lista de argumentos variadic (
...
) introducido en PHP 5.6 ( consulte la documentación completa aquí ).Sintaxis:
Por ejemplo:
Como puede ver, este token básicamente convierte todos los parámetros en una matriz, que puede procesar de la forma que desee.
fuente