2010-09-13 12 views
5

Mientras escribía una aplicación reciente accidentalmente comencé a llenar una matriz antes de haberla declarado.¿Es necesario declarar una matriz de PHP antes de su uso?

error_reporting (E_ALL); 
$array['value'] = 'Test string'; 

Uso el informe de errores E_ALL y no se produjo un error. ¿Es esto correcto? Y si es así, ¿hay algún problema al declarar valores de matriz mientras que nunca se declara la matriz real? Quizás simplemente no sigue buenos estándares de programación.

+0

Cuando dice "no arrojado", ¿quiere decir que no se mostró en la pantalla o no se registró (si su nivel de registro está configurado correctamente). Si se registró y no se muestra, compruebe la configuración de display_errors en su php.ini (debe establecerse en 1): esta es una buena referencia: http://php.net/manual/en/errorfunc.configuration.php – jlindenbaum

Respuesta

4

Al escribir una aplicación reciente que accidentalmente comenzó a llenar una matriz antes había declarado.

PHP es un lenguaje débilmente tipado. Su extracto:

$array['value'] = 'Test string'; 

es una declaración implícita (a través de la asignación) de una matriz asociativa. Por lo tanto, no se generará un aviso.

Sin embargo, si tuviera que escribir:

echo $array['value']; 

ante un assigment, a continuación, recibirá un aviso Undefined variable.

3

No, usted no tiene que

Y sí, es un buen hábito para declarar la matriz para aumentar redability código

2

Para ampliar sobre eso, no, no "tener" a, pero puede ser beneficioso para.

Además, si ha desactivado E_NOTICES, no verá los errores de una variable no inicializada. En producción, debe apagarlo, pero en el desarrollo debe encenderlo. Te permitirá encontrar problemas que podrías no ver.

+1

Estoy de acuerdo. Siempre es una buena práctica declarar una matriz antes de su uso. –

+3

Además, no hay razón para desactivarlo en la producción. Quiero decir, si su código está limpio no se informará nada. –

+0

"En producción, debe apagarlo" ¿Por qué? Claro que "la prueba de desarrollo debe resolver los errores antes de la producción", pero ¿y si no lo hacen? Por improbable que sea, si hay problemas en Prod, quiere verlos. Si tiene informes de errores para mostrarlos incluso en Prod, y hay errores, entonces los detecta y, si no hay errores, tampoco hay registros. Entonces no hay razones para apagarlo en producción. – James

Cuestiones relacionadas