2012-03-01 7 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; } 'сделай это? –

ответ

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 первый ответ, который на самом деле объясняет, что не так. –

0

попробовать это:

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

+1 если вы также можете объяснить, почему. –

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); 
} 
Смежные вопросы