2012-10-07 20 views
8

funciones A menudo, he visto que se denominan comoUso de variables temporales, mientras que llamando a la función en PHP

$content = getContent($isAdmin = false) 

Mientras que la declaración de la función es como

function getContent($isAdmin = true){ 
....} 

¿Por qué alguien agregar una sobrecarga de crear una variable y usarlo solo una vez en una llamada de función !!

Entiendo que esto hace que la llamada a la función sea clara, pero ¿no deberíamos usar bloques PHPDoc en su lugar?

+1

Esa asignación de variables por cierto es bastante barato. De todos modos, tienes la molestia de la memoria, incluso si no hubiera una variable. PHP es muy bueno con tales cosas. No temas las variables, incluso si solo las usas una vez, úsalas. Mejorarán tu código. – hakre

Respuesta

7

Tengo la sensación de que está profundamente conmocionado por tanta "pérdida".

Mantener fresco, el uso de variables no es nada malo, debe usarlas a menudo. Normalmente hacen que su código sea más descriptivo y aún más rápido.

La parte más descriptiva es el caso aquí, si nos fijamos en esa línea, verá qué parámetro es porque ahora tiene un nombre.

pero ¿no deberíamos usar bloques PHPDoc?

Bueno, en realidad esto no está relacionado con los comentarios (docblock). Incluso en la definición de la función, no hay ningún comentario para que el parámetro :

function getContent($isAdmin = true) { 

Es sólo la definición del parámetro por su nombre. También el parámetro de bloque de documentación sería sólo cuando se define la función:

... 
* @param $isAdmin bool (optional) true or false, true by default 
... 
function getContent($isAdmin = true) { 

Sin embargo eso no es donde la función se llama:

$content = getContent($isAdmin = false) 

Así que si nos fijamos en esa línea (y antes de pulsar ninguna tecla de acceso directo o el botón del mouse), ya lo leyó. Nada es necesario, solo el código. Funciona incluso en el bloc de notas o en un gedit no configurado.

$nonAdmin = false; 
$content = getContent($nonAdmin); 

Y por cierto, si su código necesita comentarios, esto es normalmente una señal de que es demasiado complicado. Además, el nombre de un parámetro es mucho más importante que su bloque de documentos. Un buen nombre normalmente significa que no es necesario tener una etiqueta docblock (lo que significa: menos código para mantener), porque el nombre habla por sí mismo.

También los IDEs modernos conocen el tipo de parámetro mediante análisis estático y, por lo tanto, tampoco necesitan la etiqueta docblock. Entonces no, no siempre deberías usar PHPDocblocks.

+0

+1 Argumento fuerte Me pregunto cuándo se admitirían los argumentos de palabras clave en PHP – Baba

+0

+1 para "Así que no, no siempre debes usar PHPDocblocks.", Esto me hizo preguntarme cómo la mayoría de los IDE modernos muestran el nombre del parámetro de función junto con su tipo de datos (si se proporciona un valor predeterminado) – Akash

3

escribir como:

$content = getContent($isAdmin = false) 

permite $isAdmin ser definido aún ámbito de la función exterior, es decir, si se emite un var_dump($isAdmin), se obtiene bool(false).

De esta manera se guarda una asignación var:

$isAdmin = false; 
$content = getContent($isAdmin); 
... 
someStuff($isAdmin); 
Cuestiones relacionadas