PHP: Constants & Bitwise separator as default argument to a method
Im creating a class method and want to have a default argument value that contains constants:
<?php
class mq_series_client{
function get($message_options = array('Options' => MQSERIES_MQGMO_FAIL_IF_QUIESCING | MQSERIES_MQGMO_WAIT, 'WaitInterval' => 500)){
}
}
However I'm getting a Parse error: syntax error, unexpected '|'
I could do this:
<?php
class mq_series_client{
function get(Array $message_options = null){
if(!isset($message_option开发者_开发问答s)){
$message_options = array('Options' => MQSERIES_MQGMO_FAIL_IF_QUIESCING | MQSERIES_MQGMO_WAIT, 'WaitInterval' => 500);
}
}
}
But it doesn't seem very clean. I wish the first way would work!
Is there a better "correct" way to do this?
It looks like the first option is not valid, as according to this page:
The default value must be a constant expression, not (for example) a variable, a class member or a function call.
Experimenting a bit, it looks like expressions are not accepted, like:
<?php
function get($options = array('test' => 1+1)) {
}
}
?>
which chokes on the +
-- presumably because it is not a “constant expression.“
精彩评论