2011-01-21 9 views
3

Imはクラスメソッドを作成し、定数が含まれているデフォルトの引数の値がしたいメソッドにデフォルト引数としてビット単位の区切り:PHP:定数&

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

をしかし、それは非常にきれいいないようです:

私はこれを行うことができます。私は最初の方法がうまくいくことを望む!

これを行うには「正しい」方法がありますか?

答えて

2

それは、最初のオプションがthis pageによると、有効ではありませんようになっています

のチョーク
<?php 
    function get($options = array('test' => 1+1)) { 

    } 
} 
?> 

:ビットを試す

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

式は受け入れられないように、それは次のように見えます、 + - おそらくそれは "定数式"ではないからです。

+0

ありがとうSebastien、なぜ私の最初の試行が失敗したかがわかります。実際にはかなりイライラしていますが、それがそのように働くときれいになります。 –