繁体   English   中英

人们为什么在PHP函数中设置默认参数?

[英]Why do people set default parameters in PHP functions?

例:

function example($x = "")
{
    Do something
}

$ x默认情况下是否为空? 为什么要明确设置?

$ x默认情况下是否为空?

如果未指定默认值,则$x默认情况下不是空字符串,而是未定义的变量。 ""NULL或未定义之间有区别。
但是,设置默认值可使您在调用函数时忽略该参数,而不会引发警告。

<?php
function test1($x = "DEFAULT") {
    echo $x;
}
function test2($x) {
    echo $x;
}

// Call each without the parameter $x:    
test1();
// DEFAULT

test2();
// Output:
PHP Warning:  Missing argument 1 for test2(), called in /home/mjb/test.php on line 10 and defined in /home/user/test.php on line 5
PHP Notice:  Undefined variable: x in /home/user/test.php on line 6

主要原因是在声明中设置默认值会使参数成为可选参数:

$a = example();
$b = example(5);

原因之一是,当您重用该函数时,不必显式设置变量。 当默认设置为true或false时,会发生很多情况。 这样,函数似乎可以像其他oop语言一样重载。 如果该变量不包含默认值,则始终必须设置该值,否则函数将引发错误,但是,通过将变量设置为默认值,则不必一定要设置变量。 希望对大家有所帮助:)

我使用默认值的原因之一是使我在调用函数时不必声明变量,即:

function something(debug=false){
 doing something here;
 if ($debug === true){
  echo 'SOMETHING';
 }else{
  return true;
 }
}

这样,您可以调试一些事情,只需将变量添加到函数调用中即可,但是如果不添加变量,函数将假定它为false。 这在我的$ _GET安全功能中很有价值,当我打开调试功能时,该功能会用来加密$ _GET字符串,$ _ GET会被解码并作为数组转储到

<pre>print_r($_GET);</pre>

这样我就可以看到$ _GET中的值,但是该字符串仍在地址栏中进行了加密。

希望能有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM