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

时间:2011-12-31 04:02:53

标签: php function parameters

示例:

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

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

4 个答案:

答案 0 :(得分:6)

  

默认情况下,$ 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

答案 1 :(得分:3)

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

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

答案 2 :(得分:1)

当您重复使用您没有明确设置变量的函数时,有一个原因。当默认设置为true或false时,会发生这种情况。这样一个函数似乎可以像其他oop语言一样重载。如果该变量不包含默认值,则您必须始终设置该值,否则您的函数会抛出错误,但是,通过将变量设置为默认值,您不必设置该值的值。变量。希望有所帮助:)

答案 3 :(得分:1)

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

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

这样你可以调试一些东西,只需将变量添加到函数调用中,但是如果你不添加它,那么函数假定它是假的。这在我的$ _GET安全函数中非常有价值,当我打开调试时,我用来加密我的$ _GET字符串$ _GET被解码并作为数组转储到

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

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

希望有所帮助

相关问题