A quick gotcha that I wasn't aware of, suppose you have a function definition like this:
<?php
function foo(array $bar = array('baz' => ''),$che){}
?>
And you want to check if $bar has a default value:
<?php
$rfunc = new ReflectionFunction('foo');
$rparams = $rfunc->getParams();
echo $rparams[0]->isDefaultValueAvailable() ? 'TRUE' : 'FALSE';
?>
That will echo 'FALSE' because $che has no default value so $bar becomes required and the Reflection interface no long sees $bar's default value of array('baz' => '').
The solution is to give $che a default value also:
<?php
function foo(array $bar = array('baz' => ''),$che = null){}
?>
And then $bar's default value will be visible again.
While I understand why it does this, I still wish there was a way to get the default value without resorting to giving all params after it a default value also.
ReflectionParameter::isDefaultValueAvailable
(PHP 5 >= 5.0.3)
ReflectionParameter::isDefaultValueAvailable — Comprueba si el valor por omisión está disponible
Descripción
public bool ReflectionParameter::isDefaultValueAvailable
( void
)
Comprueba si el valor por omisión para el parámetrp está disponible.
Parámetros
Esta función no tiene parámetros.
Valores devueltos
TRUE si el valor por omisión está disponible, en caso contrario FALSE
Ver también
- ReflectionParameter::getDefaultValue() - Obtiene el valor por omisión del parámetro
- ReflectionParameter::getName() - Obtener el nombre del parámetro
php at marcyes dot com ¶
1 year ago
