Значение по умолчанию для аргумента функции php — как узнать, что такое def. значение было применено?

У меня есть функция

function my_func($id,$arg1='aaa',$arg2='bbb'){
if($arg1=='aaa'){
//means that def. value applied, real argument has not been provided
}
if($arg1=='bbb'){
//means that def. value applied, real argument has not been provided
}
}

Я проверяю, являются ли мои значения значениями по умолчанию, я сделаю одно, если нет — другое.
Но мой пользователь может вызвать мою функцию как

 my_func($id,'aaa','bbb')

Таким образом, он предоставил реальные ценности. Как я знаю, что эти значения реальны в моем коде, а не по умолчанию?

2

Решение

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

Что ты Можно do разрабатывает вашу функцию так, чтобы значения по умолчанию не могли быть перепутаны с фактическими, полезными аргументами. Затем вы можете обнаружить этот случай и указать значения, которые вы действительно хочу использовать в этом случае. Например:

function my_func($id,$arg1=null,$arg2=null){
if($arg1===null){
$arg1 = "aaa";
// do other default things
}
if($arg2===null){
$arg2 = "bbb";
// do other default things
}
}

Если вызывающая сторона вызывает функцию с "aaa", он не будет принят за аргумент по умолчанию. Конечно, вызывающая сторона всегда может вызвать функцию с null как значение, которое будет неотличимо от отсутствующих аргументов; но это на самом деле не так уж и плохо, специальные значения просто означают «делать вещи по умолчанию».

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector