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

发布于 2024-07-29 13:54:46 字数 262 浏览 4 评论 0原文

这合法吗?

<?php

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

?>

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

Is this legal?

<?php

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

?>

where MENU_DEFAULT_VALUE and ODP_DEFAULT_VALUE are constants defined previously in the file.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

白昼 2024-08-05 13:54:47

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

class MyClass
{
    const A = 1;

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

In an OOP context, you can also use a class member constant as a default method argument value.

class MyClass
{
    const A = 1;

    public function __construct($arg = self::A)
    {
        echo $arg;
    }
}
旧梦荧光笔 2024-08-05 13:54:47

你为什么不尝试一下呢?

不过,以防万一您现在可以测试,下面的代码:

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)

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

why don't you try ?

Still, just in case you can test right now, the following code :

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();

gives this output :

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

So I'd say that, yes, it is valid :-)

美人骨 2024-08-05 13:54:46

是的,这是合法的。

来自手册

默认值必须是常量
表达式,而不是(例如)a
变量、类成员或函数
打电话。

常量完全符合这个要求。

Yes, that is legal.

From the manual:

The default value must be a constant
expression, not (for example) a
variable, a class member or a function
call.

Constants fit that bill perfectly.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文