2012-05-14 13 views
12

¿Sería posible especificar un valor de argumento predeterminado cuando el argumento es un cierre de PHP? Me gusta:Cierre de PHP como argumento de función opcional

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

¿Me falta algo (quizás una sintaxis diferente?) O no es posible en absoluto? Por supuesto que sé que puedo hacer:

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

(NOTA: no he probado el código anterior)

Respuesta

14

Default arguments sólo puede ser "argumentos" escalares, arrays, o NULL.

"scalar values" en PHP son números, cadenas y booleanos.

Si desea que una función sea un argumento predeterminado, tendrá que usar la 2da vía, la 1ra es un error de sintaxis.

+0

Oh, ya veo. Entonces mi pregunta es inútil. Gracias de cualquier manera. – gremo

+1

@Gremo: No es una pregunta inútil, es una buena pregunta. Otros se estarán preguntando lo mismo :-) –

+1

De acuerdo. Soy un desarrollador de PHP pero todavía encuentro esto interesante. – Madbreaks

Cuestiones relacionadas