2012-05-14 17 views
12

Czy można określić domyślną wartość argumentu, gdy argumentem jest zamknięcie PHP? Na przykład:Zamknięcie PHP jako argument funkcji opcjonalnej

public function getCollection($filter = function($e) { return $e; }) 
{ 
    // Stuff 
} 

Czy brakuje mi czegoś (może innej składni?) Lub w ogóle nie jest to możliwe? Oczywiście wiem, że mogę zrobić:

public function getCollection($filter = null) 
{ 
    $filter = is_callable($filter) ? $filter : function($e) { return $e; }; 
    // Stuff 
} 

(UWAGA: Nie testowałem powyższy kod)

Odpowiedz

14

Default arguments może być tylko „argumenty” skalarne, tablice lub null.

"scalar values" w PHP są liczby, ciągi znaków i booleans.

Jeśli chcesz, aby funkcja była domyślnym argumentem, będziesz musiał użyć drugiej metody, pierwsza to błąd składniowy.

+0

Och, rozumiem. Moje pytanie jest bezużyteczne. Dzięki i tak. – gremo

+1

@Gremo: To nie jest bezużyteczne pytanie, to dobre pytanie. Inni mogą się zastanawiać, to samo :-) –

+1

Uzgodnione. Jestem programistą PHP, ale nadal uważałem to za interesujące. – Madbreaks

Powiązane problemy