参数结构php函数& php函数:面向对象与否?

时间:2015-05-03 08:02:28

标签: php function

为什么有些程序员在函数参数中设置null?

像:

function  func ($arg1, arg2 = null)
{
   print $arg1.' '.$arg2;
}

所以我可以用它来调用它:func('test1')(没有写$arg2)它打印test1但是如果调用func('test1','test2') ...它只打印test1 }。

运行和调试功能的速度对我来说非常重要...所有功能都是静态的...我必须在一个类或没有类的情况下带来更快的功能?我不关心面向对象......只有速度。

1 个答案:

答案 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