PHP: константы и битовый разделитель как аргумент метода по умолчанию - PullRequest
3 голосов
/ 21 января 2011

Я создаю метод класса и хочу иметь значение аргумента по умолчанию, которое содержит константы:

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

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

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

1 Ответ

2 голосов
/ 21 января 2011

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

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

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

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

    }
}
?>

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

...