我不知道这叫什么,但我看到PHP支持一个很酷的参数传递,比如:
function myFunc($required_value, $optional_value1 = 'default', $optional_value2 = 'default2'){
}
然后我就能做到:
myFunc('something', $optional_value2 = 'test');
因此,关于这一点有两个问题:
- 这种技术叫什么(供将来参考)
- 既然它支持什么PHP版本
它被称为默认参数。
在你的例子中。有一个小错误。给定你的功能
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不支持命名参数,所以顺序很重要。因此,不能省略中间的params。因此,以下语句可能是错误的,因为您正在尝试使用命名参数。
myFunc('something', $optional_value2 = 'test');
有关更多详细信息,请参阅此
我不确定you are able to do
是什么,但php还不支持命名参数
破坏
myFunc('something', $optional_value2 = 'test');
并不意味着$optional_value2
将成为功能中的"测试"参见演示
您当前实现的是函数中的默认参数
我唯一想到的是通过数组传递参数。
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'));
然后在函数中,您可以检查是否有足够的params来处理函数。
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',$optional 2=5){
}
在调用函数时,我们可以将其称为
myFunc($param1);
myFunc($param1 , 'new string');
myFunc($param1,'string',10);
但不是myFunc($param1,10);不允许跳过中间参数你用来调用函数的方法是错误的
在你的例子中。有一个小错误。你不能省略中间的params。所以下面的函数调用
myFunc('something', $optional_value2 = 'test');
不允许!函数调用中不能再出现$optional_value2="test"。。。应该简单地将"test"作为参数传递给函数。