Pregunta

Im la creación de un método de clase y quieren tener un valor de argumento predeterminado que contiene las constantes:

<?php
class mq_series_client{
    function get($message_options = array('Options' => MQSERIES_MQGMO_FAIL_IF_QUIESCING | MQSERIES_MQGMO_WAIT, 'WaitInterval' => 500)){

    }
}

Sin embargo estoy recibiendo un error de análisis: error de sintaxis, inesperada '|'

Yo podría hacer esto:

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

Sin embargo, no parece muy limpio. Me gustaría que la primera forma funcionaría!

¿Hay una mejor manera "correcta" de hacer esto?

¿Fue útil?

Solución

Parece que la primera opción no es válida, ya que, según esta página :

El valor predeterminado debe ser una constante expresión, no (por ejemplo) una , Un miembro de la clase variable o una función llamada.

Experimentar un poco, parece que no se aceptan expresiones, como:

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

    }
}
?>

, que se ahoga con la + - “. Expresión constante“, presumiblemente debido a que no es un

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top