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);
}
}
}
Но это не кажется очень чистым. Я бы хотел, чтобы первый способ сработал!
Есть ли лучший "правильный" способ сделать это?
3
1 answers
Похоже, что первый вариант недопустим, так как согласно этой странице:
Значение по умолчанию должно быть постоянным выражение, а не (например) переменная, член класса или вызов функции.
Немного поэкспериментировав, похоже, что выражения не принимаются, например:
<?php
function get($options = array('test' => 1+1)) {
}
}
?>
, который подавляется +
- предположительно, потому что это не "постоянное выражение".
2
Author: Sébastien Le Callonnec, 2011-01-21 19:21:36