Вызов функции аргумента 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, что он не позволяет вызовам функций в качестве аргументов по умолчанию (например, делает ли он что-то особенное в предварительной обработке?) или может ли это стать функцией в будущих версиях?
Ответы
Ответ 1
Хорошо, короткий ответ заключается в том, что нет лучшего способа сделать это, насколько мне известно. Тем не менее, вы можете сделать его более аккуратным, используя тройные операторы.
function func3_name(arg1,arg2=null,etc...) {
arg2 = (arg2==null ? time() : arg2);
}
Ответ 2
Коннор на 100% правильный; однако с PHP 7 теперь вы можете использовать оператор null coalesce.
то есть.
$arg2 = $arg2 ?? time();
Просто более короткий, возможно более чистый, способ написать его.