2012-03-01 98 views
0

Possible Duplicate:
Can I use a function to return a default param in php?
Using function result as a default argument in PHP functionPHP的意外“)”解析错误

我想对于一个功能设置默认值。我希望函数$expires的默认值为time() + 604800

我想

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

但我得到一个错误。

解析错误:语法错误,意外在上线/var/www/running/8ima/lib/cookies.lib.php '(',预计 ')' 38

我应该如何写呢?

+0

岂不'如果(!$到期){$ =到期时间()+ 604800; }“这样做? – 2012-03-01 09:37:14

回答

4
$expires = time()+604800 
在函数定义

默认值不能是一个函数,只有一个简单的数值 从the manual引用的结果:

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

用途:

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

+1第一个答案,实际上解释了什么是错的。 – 2012-03-01 09:38:09

0

试试这个:

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

+1,如果你还可以解释为什么。 – 2012-03-01 09:37:25

0

你可以做

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

你不能在你的params声明中使用函数调用。

这样来做:

public function set($name,$value,$expires = null) { 
    if(is_null($expires)) $expires = time()+604800; 
    echo $expires; 
    return setcookie($name, $value, $expires); 
} 
相关问题