2010-05-13 6 views
59
ejemplos

que he visto como las siguientes:¿Por qué los ejemplos de matriz PHP dejan una coma que se arrastra?

$data = array(
    'username' => $user->getUsername(), 
    'userpass' => $user->getPassword(), 
    'email' => $user->getEmail(), 
); 

Sin embargo, en la práctica, siempre me he no abandonaron la coma final. ¿Estoy haciendo algo mal, o es solo 'otra' forma de hacerlo? Si estuviera usando un framework, ¿no tendría la coma final afectar la generación de código negativamente? También he visto el uso de comas finales en declaraciones de matriz en otros lenguajes (Java, C++), así que supongo que las razones para dejar las comas finales no son específicas de PHP, pero esto ha despertado mi interés.

+1

Podría haber jurado que estaba obteniendo errores de análisis cuando dejé las comas de entrenamiento en PHP. –

+0

Es posible, supongo. En este ejemplo particular, analiza muy bien. – ashurexm

+0

Sí @LotusNotes Estoy seguro de que he tenido errores antes también. Pero claramente, ¡ya no! –

Respuesta

74

¿Por qué hacer PHP Array Examples Leave a Trailing Comma?

Porque pueden. :) El PHP Manual entry for array estados:

Tener una coma al final después de la última entrada de la matriz definida, aunque inusual, es una sintaxis válida.

En serio, esto es completamente por conveniencia, por lo que puede agregar fácilmente otro elemento a la matriz sin tener que agregar primero la coma final a la última entrada.

Hablando de otros idiomas: Tenga cuidado con esto en JavaScript. Firefox tolerará indulgentemente las comillas finales; Internet Explorer arrojará, con razón, un error.

+1

Esto es lo que pensé, simplemente no estaba seguro de si me estaba perdiendo el bote en algo. Supongo que para las personas que pasan su tiempo en algunos idiomas que permiten esto, es probable que sea un hábito decente. Pero dado que trato con muchos idiomas diferentes, y como dijiste que JavaScript (y quién sabe qué otros idiomas) podría arrojar errores, podría ser más seguro para mí continuar con mi hábito de no dejar una coma al final. – ashurexm

+0

@manyx yup, no hay nada de malo en eso. Tampoco estoy seguro si ser capaz de mantener las comillas es algo bueno. Parece un error de sintaxis al revisar el código. –

+1

Las versiones más nuevas de JavaScript que el código IE6/7 para permitir explícitamente, ahora. – staticsan

4

No puedo hablar por otras personas, pero generalmente dejo una coma en mi código. Lo hago porque si/cuando más tarde agregue a la matriz, no tengo que preocuparme de perder una coma debido a que olvidé agregar una coma a la que anteriormente era la última línea.

3

Siempre uso comas al final porque ayuda a evitar errores de sintaxis al agregar nuevos elementos de matriz ... es una buena práctica.

+2

Lamento revivir esto pero, ¿cómo una coma final evita los errores de sintaxis más adelante? Acabo de descubrir que PHP permite la coma final, pero no puedo ver ni encontrar el uso para ella. Agregar nuevos índices más adelante todavía se hace a través de '$ arr [] = ...'. – Daniel

+0

@Daniel, él está hablando de volver al código fuente más tarde y agregar otra línea al literal de la matriz. –

15

Esta es una buena práctica al definir una matriz en varias líneas. También es alentado por ZendFramework's coding standards:

Cuando se utiliza esta última declaración, que fomentan el uso de una coma al final de el último elemento de la matriz; este minimiza el impacto de agregar nuevos elementos en líneas sucesivas, y ayuda a para garantizar que no se produzcan errores de análisis debido a falta una coma.

3

Creo que, aunque está permitido, es una mala práctica, es como dejar de lado el último punto y coma de sus funciones y bucles.

2

Porque mantiene las entradas uniformes.

Si ha tenido que cambiar el orden, o agregar o eliminar entradas, sabe que puede dejar una coma final muy conveniente.

Si el último elemento no puede tener una coma, entonces tendrá que mantener la última coma modificando las entradas. Es un ejercicio sin sentido y una pérdida de tiempo y golpes con los dedos porque la intención de intercambiar o modificar entradas ya se ha logrado.

Al permitir una coma final en el último elemento, libera al programador de tener que atender a este detalle molesto e infructuoso.

10

Me di cuenta al trabajar con el control de versiones (git) que si agregamos 1 cosa a una matriz y no tenemos la coma final, parecerá que modificamos 2 líneas porque la coma se tuvo que agregar al línea anterior. Encuentro que esto se ve mal y puede ser engañoso cuando miro los cambios en el archivo, y por esta razón creo que una coma final es algo bueno.

+0

Y eso es, definitivamente, por qué las comillas finales son para :) Diff coherencia – Ninj

+0

No sé si tiene algo que ver con por qué está allí. Yo pensaría que no. Pero lo encuentro útil. – user985366

+0

Pero ese * es * el motivo por el que está aquí. Se podría decir que está aquí para evitar errores en la próxima línea. Pero no lo es, porque ningún IDE actual le permitiría agregar líneas sin comme, aparecería un aviso de error. – Ninj

Cuestiones relacionadas