0

Possible Duplicate:
Can I use a function to return a default param in php?
Using function result as a default argument in PHP function

I am trying to set default value for a function. I want the function $expires default value to be time() + 604800.

I am trying

public function set($name,$value,$expires = time()+604800) {
    echo $expires;
    return setcookie($name, $value, $expires);
    }

But I get an error.

Parse error: syntax error, unexpected '(', expecting ')' in /var/www/running/8ima/lib/cookies.lib.php on line 38

How should I write it?

Community
  • 1
  • 1
ppp
  • 2,035
  • 9
  • 32
  • 52

4 Answers4

4
$expires = time()+604800

in the function definition.

Default value can't be the result of a function, only a simple value QUoting from the manual:

The default value must be a constant expression, not (for example) a variable, a class member or a function call.

Use:

public function set($name,$value,$expires = NULL) { 
    if (is_null($expires))
        $expires = time()+604800;
    echo $expires; 
    return setcookie($name, $value, $expires); 
} 
Mark Baker
  • 209,507
  • 32
  • 346
  • 385
1

You cannot use a function call in your params declaration.

Do it this way:

public function set($name,$value,$expires = null) {
    if(is_null($expires)) $expires = time()+604800;
    echo $expires;
    return setcookie($name, $value, $expires);
}
Marc
  • 6,749
  • 9
  • 47
  • 78
0

try this:

public function set($name,$value,$expires = NULL) {
    if(is_null($expires)) {
        $expires = time() + 604800;
    }
    echo $expires;
    return setcookie($name, $value, $expires);
}
knkill_prfl
  • 219
  • 1
  • 4
  • 9
0

You could do

public function set($name,$value,$expires = null) {
 if($expires === null){$expires = time()+604800);
 echo $expires;
 return setcookie($name, $value, $expires);
}
Nicola Peluchetti
  • 76,206
  • 31
  • 145
  • 192