2012-03-01 86 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); 
}