PHP: Constantes y bit a bit separador como argumento por defecto a un método
-
16-10-2019 - |
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?
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