2012-01-14 26 views
6

¿Es posible establecer un objeto DateTime como parámetro opcional usando now como valor predeterminado?DateTime como parámetro opcional (predeterminado en "ahora", no nulo)?

El siguiente código me da un error de sintaxis:

public function getData(array $metrics, DateTime $start, 
    DateTime $end = new DateTime, $params = array()) 
{ 
    // Default DateTime constructor automatically use "now" 
} 

Es sólo una cuestión de curiosidad, yo se que puedo hacer:

public function getData(array $metrics, DateTime $start, 
    DateTime $end = null, $params = array()) 
{ 
    $end = is_null($end) ? new DateTime() : null; 
} 

Respuesta

6

No, no se puede establecer una objeto como un parámetro predeterminado de función/método. Desde el documentation:

Parámetros por defecto
Una función puede definir C++ - valores por defecto de estilo para escalares argumentos ...

Un objeto no es un scalar datatype.

Cuestiones relacionadas