开发者

PHP: Constants & Bitwise separator as default argument to a method

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_option开发者_开发问答s)){
           $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?


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.“

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜