在PHP中使用常量作为默认函数值

时间:2009-08-04 18:04:40

标签: php function constants

这合法吗?

<?php

function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) {
      //lots_of_awesome_code
}

?>

其中MENU_DEFAULT_VALUEODP_DEFAULT_VALUE是先前在文件中定义的常量。

3 个答案:

答案 0 :(得分:23)

是的,这是合法的。

来自the manual

  

默认值必须是常量   表达,而不是(例如)a   变量,类成员或函数   调用

常数完全符合该法案。

答案 1 :(得分:14)

在OOP上下文中,您还可以使用类成员常量作为默认方法参数值。

class MyClass
{
    const A = 1;

    public function __construct($arg = self::A)
    {
        echo $arg;
    }
}

答案 2 :(得分:10)

你为什么不试试?

尽管如此,以防您现在可以测试,以下代码:

define('MENU_DEFAULT_VALUE', 10);
define('ODP_DEFAULT_VALUE', 'hello');

function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) {
    var_dump($foo);
    var_dump($nub);
    var_dump($odp);
}

ftw();

给出了这个输出:

string 'pwnage' (length=6)
int 10
string 'hello' (length=5)

所以我会说,是的,它是有效的: - )