为什么有些程序员在函数参数中设置null?
像:
function func ($arg1, arg2 = null)
{
print $arg1.' '.$arg2;
}
所以我可以用它来调用它:func('test1')
(没有写$arg2
)它打印test1
但是如果调用func('test1','test2')
...它只打印test1
}。
运行和调试功能的速度对我来说非常重要...所有功能都是静态的...我必须在一个类或没有类的情况下带来更快的功能?我不关心面向对象......只有速度。
答案 0 :(得分:1)
有一个很好的技巧来模拟变量/函数调用/ etc作为默认值:
<?php
$myVar = "Using a variable as a default value!";
function myFunction($myArgument=null) {
if($myArgument===null)
$myArgument = $GLOBALS["myVar"];
echo $myArgument;
}
// Outputs "Hello World!":
myFunction("Hello World!");
// Outputs "Using a variable as a default value!":
myFunction();
// Outputs the same again:
myFunction(null);
// Outputs "Changing the variable affects the function!":
$myVar = "Changing the variable affects the function!";
myFunction();
?>
通常,您将默认值定义为null(或您喜欢的任何常量),然后在函数开始时检查该值,在使用实际工作的参数之前计算实际默认值(如果需要)。 / p>
在此基础上,当给定的参数无效时,也很容易提供回退行为:只需在原型中放置一个已知无效的默认值,然后检查一般有效性而不是特定值:如果参数无效(未给出,因此使用默认值,或者给出了无效值),该函数计算要使用的(有效)默认值。
默认函数参数的使用不正确
<?php
function makeyogurt($type = "acidophilus", $flavour)
{
return "Making a bowl of $type $flavour.\n";
}
echo makeyogurt("raspberry"); // won't work as expected
?>
以上示例将输出:
Warning: Missing argument 2 in call to makeyogurt() in
/usr/local/etc/httpd/htdocs/phptest/functest.html on line 41
Making a bowl of raspberry .
现在,将上述内容与此进行比较:
正确使用默认函数参数
<?php
function makeyogurt($flavour, $type = "acidophilus")
{
return "Making a bowl of $type $flavour.\n";
}
echo makeyogurt("raspberry"); // works as expected
?>
以上示例将输出:
Making a bowl of acidophilus raspberry.
注意:从PHP 5开始,通过引用传递的参数可能具有默认值。
以下是我为您提供的深入学习函数参数的几个链接 -
http://www.w3schools.com/php/php_functions.asp http://php.net/manual/en/functions.arguments.php