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

Но это не кажется очень чистым. Я бы хотел, чтобы первый способ сработал!

Есть ли лучший "правильный" способ сделать это?

Author: Charles, 2011-01-21

1 answers

Похоже, что первый вариант недопустим, так как согласно этой странице:

Значение по умолчанию должно быть постоянным выражение, а не (например) переменная, член класса или вызов функции.

Немного поэкспериментировав, похоже, что выражения не принимаются, например:

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

    }
}
?>

, который подавляется + - предположительно, потому что это не "постоянное выражение".

 2
Author: Sébastien Le Callonnec, 2011-01-21 19:21:36