5
votes

I'm writing a function which requires some units of date, like "hour", "minute" and "second" but I would like to make these option and the server's current time is used as the default.

In PHP's mktime(..) I notice that they use function calls to get the default argument value - but when I try this, it doesn't work:

PHP's appears to be like this: mktime([int $hour = date("H")[,int $minute= date("i")[,etc...

And I've tried to copy this into my function, exactly the same (just not as many arguments until I get it working): function myFunc([int $hour = date("H")[,int $minute= date("i")]]) {

Using this code, PHP tells me Parse error: syntax error, unexpected '[', expecting '&' or T_VARIABLE in ...

I've tried searching for this - but managed to find nothing on the topic. My question is, is this possible for me to do or am I going to have to specify null as the parameters and then check them inside the function like so:

function myFunc($hour=null,etc...) {
  if($hour==null){$hour=date("H");}
  //etc...
}

As for justification of why I want to know this other than using the solution I've provided to myself - I'm still learning PHP and want to learn the best practises.

1

1 Answers

9
votes

A default function argument should be a compile time constant. Or in PHP's case the value should be known to the PHP interpreter before executing the script.

Therefore you cannot directly use function result as a default argument

Thus only way is the null default argument method you already know.