我不知道这叫什么,但我看到 PHP 支持一个很酷的参数传递,例如:
function myFunc($required_value, $optional_value1 = 'default', $optional_value2 = 'default2'){
}
然后我就可以做到:
myFunc('something', $optional_value2 = 'test');
所以有两个关于这个的问题:
- 这种技术叫什么(供将来参考)?
- 由于它支持什么 PHP 版本?
我不知道这叫什么,但我看到 PHP 支持一个很酷的参数传递,例如:
function myFunc($required_value, $optional_value1 = 'default', $optional_value2 = 'default2'){
}
然后我就可以做到:
myFunc('something', $optional_value2 = 'test');
所以有两个关于这个的问题:
它称为默认参数。
在你的例子中。有一个小错误。给定你的功能
function myFunc($required_value, $optional_value1 = 'default', $optional_value2 = 'default2'){
.....
}
您可以通过以下方式调用它:
myFunc('required_value'); //$optional_value1 = 'default', $optional_value2 = 'default2'
myFunc('required_value', 'opt1'); //$optional_value2 = 'default2'
myFunc('required_value', 'opt1', 'op2');
需要注意的是php不支持命名参数,所以顺序很重要。因此,您不能省略中间参数。因此以下语句将是错误的,因为您正在尝试使用命名参数。
myFunc('something', $optional_value2 = 'test');
有关更多详细信息,请参阅此
我想到的唯一想法是通过数组传递参数。
function f($params)
{
if(!isset($params['name']) || !isset($params['adress']))
{
//trigger error throw exception or whatever
}
//do something with params
}
并打电话
f(array('name' => 'asdfasdf', 'adress' => 'adfasdf'));
然后在函数中,您可以检查是否有足够的参数来处理函数。
PHP 没有命名参数,例如 C#。
PHP 支持参数的默认值,因此您可以使用它,例如:
function f($name = "John Doe"){echo $name;}
你打电话时
echo f(); // John Doe will be displayed
echo f("Robert"); //Robert will be displayed
这是默认参数
需要注意的重要一点是,可选参数只能在最后指定,因此必需参数位于函数定义中的可选参数之前,例如
函数 myFunc($param1,$optional1= 'string',$optional2= 5) {
}
在调用函数时,我们可以将其称为
myFunc($param1);
myFunc($param1 , 'new string');
myFunc($param1,'string',10);
但不是 myFunc($param1,10); 不允许跳过中间参数!!! 你用来调用函数的方法是错误的
在你的例子中。有一个小错误。你不能省略中间参数。所以下面的函数调用
myFunc('something', $optional_value2 = 'test');
不被允许!进一步 $optional_value2 = 'test' 不能出现在函数调用中......只需将 'test' 作为参数传递给函数。