2011-07-03 68 views
4
function backtrace() { 
    var_dump(debug_backtrace()); 
} 


function echosth($what = 'default text') { 
    echo $what; 
    backtrace(); 
} 

echosth('another text'); //argument is shown 
         // ["args"]=> array(1) {[0]=>&string(12) "another text"} 
echosth(); //it appears as function has none arguments ["args"]=>array(0) {} 

有什麼辦法可以達到父功能的默認值?如何回溯默認函數參數?

回答

3

是,通過PHP反射類的getDefaultValue

function foo($test, $bar = 'baz') 
{ 
    echo $test . $bar; 
} 

$function = new ReflectionFunction('foo'); 

foreach ($function->getParameters() as $param) { 
    echo 'Name: ' . $param->getName() . PHP_EOL; 
    if ($param->isOptional()) { 
     echo 'Default value: ' . $param->getDefaultValue() . PHP_EOL; 
    } 
    echo PHP_EOL; 
} 

既然你知道debug_backtrace,你應該能夠得到調用函數的名稱,並通過循環運行。