PHP:常量和常量位分隔符作为方法的默认参数

发布于 2024-10-13 03:01:16 字数 651 浏览 2 评论 0原文

我正在创建一个类方法,并希望有一个包含常量的默认参数值:

<?php
class mq_series_client{
    function get($message_options = array('Options' => MQSERIES_MQGMO_FAIL_IF_QUIESCING | MQSERIES_MQGMO_WAIT, 'WaitInterval' => 500)){

    }
}

但是我收到了解析错误:语法错误,意外的“|”

我可以这样做:

<?php
class mq_series_client{
    function get(Array $message_options = null){
        if(!isset($message_options)){
           $message_options = array('Options' => MQSERIES_MQGMO_FAIL_IF_QUIESCING | MQSERIES_MQGMO_WAIT, 'WaitInterval' => 500);
        }
    }
}

但它看起来不太干净。我希望第一种方法能够奏效!

有没有更好的“正确”方法来做到这一点?

Im creating a class method and want to have a default argument value that contains constants:

<?php
class mq_series_client{
    function get($message_options = array('Options' => MQSERIES_MQGMO_FAIL_IF_QUIESCING | MQSERIES_MQGMO_WAIT, 'WaitInterval' => 500)){

    }
}

However I'm getting a Parse error: syntax error, unexpected '|'

I could do this:

<?php
class mq_series_client{
    function get(Array $message_options = null){
        if(!isset($message_options)){
           $message_options = array('Options' => MQSERIES_MQGMO_FAIL_IF_QUIESCING | MQSERIES_MQGMO_WAIT, 'WaitInterval' => 500);
        }
    }
}

But it doesn't seem very clean. I wish the first way would work!

Is there a better "correct" way to do this?

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

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

发布评论

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

评论(1

暮年 2024-10-20 03:01:16

根据此页面,第一个选项似乎无效:

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

尝试了一下,看起来表达式不被接受,例如:

<?php
    function get($options = array('test' => 1+1)) {

    }
}
?>

它在 + 上被阻塞——大概是因为它不是一个“常量表达式”。

It looks like the first option is not valid, as according to this page:

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

Experimenting a bit, it looks like expressions are not accepted, like:

<?php
    function get($options = array('test' => 1+1)) {

    }
}
?>

which chokes on the + -- presumably because it is not a “constant expression.“

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