ID:          12856
 Comment by:  felix at littlestarmedia dot com
 Reported By: marcus dot boerger at post dot rwth-aachen dot de
 Status:      Open
 Bug Type:    Feature/Change Request
 PHP Version: 4.0.6
 New Comment:

It is possible to have dynamic default values for functions.

Set the default value to something that will never be passed to it and
then test if the variable has that value in it. If it does then apply
your dynamic value from within the function.
If it doesn't have that value then clearly a value has been passed.

E.g.

function CreateYearDropDown($year = 1000.398) {
        
     If ($year = 1000.398) { $year = date(Y); }

     //Now Create the month drop down

}


Previous Comments:
------------------------------------------------------------------------

[2001-08-20 06:36:12] marcus dot boerger at post dot rwth-aachen dot de

Hi all,

Why is it not possible to have dynamic default function parameters?

This would give the possibility to execute any code snippet when the
default value will be used in a function code.

At current time you can only define
function f( $v=<statis_val>) {
  return $v;
}

return f();
what would result in: <static_val>

BUT sometimes there must be a dynamic part. For example when dealing
with times. Consider the following:
function t( $v=null) {
if ($v===null) $v=time();
return date( "r", $v);
}
return t();
what would return the current time formatted.

With dynamic defaults this would enable the following:
function t($v=time()) {
return date( "r", $v);
}
return t();

Additionally that *should* be used to give access to global variables:
$d = time();
function t($v=$d) {
return date( "r", $v);
}
return t(); // formatted time of script start..or given time

Another good idea would be to execute the variables from within
context:
$d = 1;
function t($v=$d) {
return $v;
}
function t2() {
$d=2;
return t();
}
function t3($v=$GLOBALS['d']) {
return $v;
}
return t();   // --> 1
return t2();  // --> 2
return t3();  // --> 1

greetings marcus

------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=12856&edit=1

Reply via email to