3

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

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

    }
}

但是我收到了 Parse 错误:语法错误,意外的 '|'

我可以这样做:

<?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);
        }
    }
}

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

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

4

1 回答 1

2

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

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

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

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

    }
}
?>

这让人窒息+——大概是因为它不是一个“常量表达式”。</p>

于 2011-01-21T19:21:36.893 回答