php 函数参数默认值 - 如何知道 def。值被应用?

php function argument default value - how to know that def. value was applied?

我有一个功能

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')

所以他提供了真正的价值。我怎么知道这些值在我的代码中是真实的,而不是默认值?

在 PHP 中,当用户为可选参数提供默认值时,结果 完全 与不存在参数时相同。没有办法区分。

可以做的是设计您的函数,以便默认值不会与实际有用的参数混淆。然后您可以检测这种情况并提供您真正想要在这种情况下使用的值。例如:

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 作为值来调用函数,这与没有参数没有区别;但这并不是一件坏事,特殊值只是意味着 "do the default thing".