3

クラスメソッドを作成していて、定数を含むデフォルトの引数値が必要です:

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

でもあまりきれいには見えません。最初の方法がうまくいくことを願っています!

これを行うためのより良い「正しい」方法はありますか?

4

1 に答える 1

2

このページによると、最初のオプションは有効ではないようです:

デフォルト値は、変数、クラス メンバー、関数呼び出しなどではなく、定数式である必要があります。

少し実験してみると、次のような式は受け入れられないようです。

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

    }
}
?>

--おそらく+「定数式」ではないためです。</p>

于 2011-01-21T19:21:36.893 に答える