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".
我有一个功能
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".