Question

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_options)){
           $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?

Was it helpful?

Solution

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.“

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top