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

Nic*_*ner 18 php constants function

这合法吗?

<?php

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

?>
Run Code Online (Sandbox Code Playgroud)

where MENU_DEFAULT_VALUEODP_DEFAULT_VALUE是先前在文件中定义的常量.

zom*_*bat 26

是的,这是合法的.

手册:

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

常数完全适合该法案.

  • @Kamafeather `static` 受后期静态绑定的影响,使其不稳定。 (3认同)

Bad*_*sie 14

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

class MyClass
{
    const A = 1;

    public function __construct($arg = self::A)
    {
        echo $arg;
    }
}
Run Code Online (Sandbox Code Playgroud)


Pas*_*TIN 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();
Run Code Online (Sandbox Code Playgroud)

给出这个输出:

string 'pwnage' (length=6)
int 10
string 'hello' (length=5)
Run Code Online (Sandbox Code Playgroud)

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