2012-01-14 15 views
6

Czy można ustawić obiekt DateTime jako parametr opcjonalny, używając domyślnie now?DateTime jako parametr opcjonalny (domyślnie "teraz", nie puste)?

Poniższy kod daje mi błąd składni:

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

to tylko kwestia ciekawości, wiem, że mogę zrobić:

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

Odpowiedz

6

Nie, nie można ustawić obiekt jako domyślny parametr funkcji/metody. Z documentation:

Domyślnie argumentem wartości
Funkcja może definiować C++ - wartości domyślne dla skalarnych argumentów ...

Obiekt nie jest scalar datatype.