在PHP手册中,为了显示带有可选参数的函数的语法,它们在每组依赖的可选参数周围使用括号.例如,对于该date()功能,手册内容为:
string date ( string $format [, int $timestamp = time() ] )
Run Code Online (Sandbox Code Playgroud)
哪里$timestamp是可选参数,当留空时它默认为time()函数的返回值.
在PHP中定义自定义函数时,如何创建这样的可选参数?
Jef*_*rth 240
与手册非常相似=,在参数定义中使用等号():
function dosomething($var1, $var2, $var3 = 'somevalue'){
// Rest of function here...
}
Run Code Online (Sandbox Code Playgroud)
Ros*_*oss 49
参数的默认值必须是常量表达式.它不能是变量或函数调用.
但是,如果您需要此功能:
function foo($foo, $bar = false)
{
if(!$bar)
{
$bar = $foo;
}
}
Run Code Online (Sandbox Code Playgroud)
假设$bar当然不应该是布尔值.
gre*_*egh 22
我发现有用的一些注意事项:
保持默认值在右侧.
function whatever($var1, $var2, $var3="constant", $var4="another")
Run Code Online (Sandbox Code Playgroud)参数的默认值必须是常量表达式.它不能是变量或函数调用.
mk.*_*mk. 14
为可选参数指定默认值.
function date ($format, $timestamp='') {
}
Run Code Online (Sandbox Code Playgroud)
Lar*_*sen 10
日期函数将定义如下:
function date($format, $timestamp = null)
{
if ($timestamp === null) {
$timestamp = time();
}
// Format the timestamp according to $format
}
Run Code Online (Sandbox Code Playgroud)
通常,您会将默认值设置为:
function foo($required, $optional = 42)
{
// This function can be passed one or more arguments
}
Run Code Online (Sandbox Code Playgroud)
但是,只有文字才是有效的默认参数,这就是我null在第一个例子中用作默认参数的原因,而不是 $timestamp = time()将其与空检查结合起来.文字包括数组(array()或[]),布尔,数字,字符串和null.
小智 10
从 7.1 开始,有可为空参数的类型提示
\nfunction func(?Object $object) {}\nRun Code Online (Sandbox Code Playgroud)\n它将适用于这些情况:
\nfunc(null); //as nullable parameter\nfunc(new Object()); // as parameter of declared type\nRun Code Online (Sandbox Code Playgroud)\n但对于可选的\xc2\xa0value 签名应该是这样的。
\nfunction func(Object $object = null) {} // In case of objects\nfunction func(?Object $object = null) {} // or the same with nullable parameter\n\nfunction func(string $object = '') {} // In case of scalar type - string, with string value as default value\nfunction func(string $object = null) {} // In case of scalar type - string, with null as default value\nfunction func(?string $object = '') {} // or the same with nullable parameter\n\nfunction func(int $object = 0) {} // In case of scalar type - integer, with integer value as default value\nfunction func(int $object = null) {} // In case of scalar type - integer, with null as default value\nfunction func(?int $object = 0) {} // or the same with nullable parameter\nRun Code Online (Sandbox Code Playgroud)\n比它可以被调用为\xc2\xa0\xc2\xa0
\nfunc(); // as optional parameter\nfunc(null); // as nullable parameter\nfunc(new Object()); // as parameter of declared type\nRun Code Online (Sandbox Code Playgroud)\n
如果您不知道需要处理多少属性,可以使用...PHP 5.6中引入的variadic参数列表标记()(请参阅此处的完整文档).
句法:
function <functionName> ([<type> ]...<$paramName>) {}
Run Code Online (Sandbox Code Playgroud)
例如:
function someVariadricFunc(...$arguments) {
foreach ($arguments as $arg) {
// do some stuff with $arg...
}
}
someVariadricFunc(); // an empty array going to be passed
someVariadricFunc('apple'); // provides a one-element array
someVariadricFunc('apple', 'pear', 'orange', 'banana');
Run Code Online (Sandbox Code Playgroud)
如您所见,此令牌基本上将所有参数转换为数组,您可以按照您喜欢的任何方式处理该数组.
| 归档时间: |
|
| 查看次数: |
120141 次 |
| 最近记录: |