Подтвердить что ты не робот

Вызов функции аргумента PHP по умолчанию

В php мы можем передавать аргументы по умолчанию для такой функции

function func_name(arg1,arg2=4,etc...) {

но, на мой взгляд, мы не можем передать вызов функции, поэтому это незаконно:

function func2_name(arg1,arg2=time(),etc...) {

поэтому, когда я хочу сделать значение функции (представьте, что функция времени не может знать значение раньше времени исполнения), я должен сделать какую-то грязную работу, например:

function func3_name(arg1,arg2=null,etc...) {
    if(arg2==null) arg2 = time();

Мне было интересно, знает ли кто-нибудь лучший способ, более чистый способ передать значения вызова функции в качестве аргументов по умолчанию в php? Спасибо.

Также есть ли фундаментальная причина в дизайне языка php, что он не позволяет вызовам функций в качестве аргументов по умолчанию (например, делает ли он что-то особенное в предварительной обработке?) или может ли это стать функцией в будущих версиях?

4b9b3361

Ответ 1

Хорошо, короткий ответ заключается в том, что нет лучшего способа сделать это, насколько мне известно. Тем не менее, вы можете сделать его более аккуратным, используя тройные операторы.

function func3_name(arg1,arg2=null,etc...) {
  arg2 = (arg2==null ? time() : arg2);
}

Ответ 2

Коннор на 100% правильный; однако с PHP 7 теперь вы можете использовать оператор null coalesce.

то есть.

$arg2 = $arg2 ?? time();

Просто более короткий, возможно более чистый, способ написать его.