Php неожиданная ')' ошибка анализа

Возможный дубликат:
Можно ли использовать функцию для возврата параметра по умолчанию в php?
Использование результата функции в качестве аргумента по умолчанию в функции PHP

Я пытаюсь установить значение по умолчанию для функции. Я хочу, чтобы значение функции $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

Как мне написать?

Ответы

Ответ 1

$expires = time()+604800

в определении функции.

Значение по умолчанию не может быть результатом функции, только простое значение Котировка из руководство:

Значение по умолчанию должно быть константным выражением, а не (например) переменная, член класса или вызов функции.

Использование:

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

Ответ 2

Вы не можете использовать вызов функции в объявлении params.

Сделайте это так:

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

Ответ 3

попробуйте следующее:

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

Ответ 4

Вы могли бы сделать

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