【问题标题】:PHP: Constants & Bitwise separator as default argument to a methodPHP:常量和按位分隔符作为方法的默认参数
【发布时间】:2011-06-13 06:15:22
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php bit-manipulation class-constants


    【解决方案1】:

    看起来第一个选项无效,根据this page

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

    实验了一下,好像不接受表达式,比如:

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

    这让+ 窒息——大概是因为它不是“常量表达式”。

    【讨论】:

    • 感谢 Sebastien,这更好地解释了我第一次尝试失败的原因。实际上很令人沮丧,如果这样工作会更干净。
    猜你喜欢
    • 2019-06-19
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 2012-11-02
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多