![](/img/trans.png)
[英]PHP: Why are some people naming functions with '_' in the beginning?
[英]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.