No importa cuán cuidadosos seamos al escribir programas, los errores son inevitables. Estos errores suelen confundir al compilador PHP. Los mensajes de error del compilador no sólo son inútiles sino que a menudo son frustrantes si los desarrolladores no entienden lo que significan.
Al compilar un script PHP, el compilador PHP hace todo lo posible para informar el primer problema que encuentra. Esto crea un problema: PHP sólo puede reconocer el error cuando ocurre (este problema se describe en detalle más adelante en este artículo). Es por esta razón que el compilador señala que la línea errónea puede parecer sintácticamente correcta en la superficie, ¡o puede ser una línea que no existe en absoluto!
Una mejor comprensión de los mensajes de error puede reducir significativamente el tiempo dedicado a identificar y corregir lo que está mal. Por lo tanto, en este artículo intentaré aclarar los diferentes tipos de mensajes de error de PHP y cómo comprender correctamente el significado de varios mensajes de error durante el proceso de desarrollo.
El contenido descrito en este artículo no tiene nada que ver con la versión de PHP que está utilizando, porque los diversos errores descritos en este artículo no se limitan a errores específicos de una versión en particular. Además, asumimos que eres un programador junior o intermedio y llevas medio año o un año dedicado a la programación.
Cómo funciona el compilador
Para comprender por qué el compilador informa un error en una línea determinada, primero debe comprender el mecanismo mediante el cual el compilador analiza el código PHP. No voy a entrar en detalles sobre esto en este artículo, pero discutiremos algunos conceptos simples que es más probable que generen errores.
Declaración de variable
Si declara una variable en una declaración, el método específico es el siguiente:
$variable = 'valor'
El compilador primero encuentra el valor de la mitad derecha de la declaración (es decir, todo lo que está en el lado derecho de igual); firmar). En algunos libros de programación, esto se representa como el lado derecho (mitad derecha) de la declaración. Es esta parte de la declaración la que a menudo causa errores. Si utiliza una sintaxis incorrecta, obtendrá un error de análisis.
Errorde análisis
: error de análisis, T_WHILE inesperado en c:\program files\apache group\apache\htdocs\script.php en la línea 19
Los errores de análisis aparecen uno tras otro cada vez que se determina el error anterior. Siguen apareciendo. Debido a que PHP deja de ejecutar el script después del primer error de análisis, depurar y corregir esta serie de errores a menudo puede resultar particularmente tedioso.
Además, los errores de análisis tienen muy poca información y casi no se informa el número de línea donde ocurrió el error. La razón específica es que cuando ocurre un error, el compilador determina que la sintaxis de varias líneas debe parecer válida hasta que encuentra una sintaxis no válida. El caso más probable es que se utilicen palabras predefinidas en la expresión, por ejemplo
while = 10; / ¿Malo? while es una palabra predefinida y no se puede asignar a un valor.
Las palabras predefinidas incluyen while, function, etc. Si PHP usa uses para evaluar su código, no puede usar estas palabras predefinidas para nombrar variables. Esto, PHP informará más errores, que no puedes soportar.
Respecto a este tema, el siguiente ejemplo puede ayudarle. Por favor consulte y lea el código PHP que se muestra a continuación:
<?php
$b = algún valor
if($b == algún valor){
imprimir ¡Hola mundo!;
}
?>
El error está en la línea $b = (falta punto y coma al final de la declaración), por lo que el error debería ser un error de análisis: falta punto y coma en la línea 3, ¿verdad? No se debe determinar en función del analizador:
Error de análisis: error de análisis, T_IF inesperado en c:\program files\apache
group\apache\htdocs\ereg2.php en la línea 4
En la línea 4, la sintaxis de la declaración if() es correcta. Entonces, ¿qué es lo que confunde al compilador? La pista es la parte T_IF inesperada. Cuando ocurre un error inesperado T_???, significa: el compilador encontró que una palabra predefinida aparece en una posición donde no debería aparecer. T_IF representa if(), T_WHILE representa while(), T_FOR representa for(), etc.
Afortunadamente, la causa de algunos errores también es simple:
la declaración no termina con un punto y coma (;), como en el ejemplo anterior. Faltan comillas en la cadena.
Algunos otros errores comunes
El error más común que veo es no cerrar una función o un bucle con una llave ( } ). Este es probablemente el error más común y molesto.
El código específico es el siguiente:
function UselessFunction() {
para($i < 0; $i < 10; $i++){
}
Se generará el siguiente error:
Error de análisis: error de análisis, $ inesperado en c:\program files\apache
group\apache\htdocs\ereg2.php en la línea 9
Dado que la función UselessFunction no termina con una llave (}), el compilador de PHP sigue buscando la llave de cierre hasta que llega al final del archivo. Debido a que el compilador no encuentra una llave coincidente, informa un error de fin de archivo.
Si la jerarquía del código se refleja correctamente, los mensajes de error serán muy obvios. Si no se marca la estructura jerárquica del código, será casi imposible descubrir qué se ha olvidado al final. Entonces, recuerda, asegúrate de indicar la jerarquía de tu código. La tecla Tab lo hace fácil. También será más fácil para los desarrolladores posteriores comprender el marco del código y modificarlo.
Errores de MySQL
Otro mensaje de error extremadamente molesto es el error de MySQL más común, que a menudo causa dolores de cabeza a los nuevos usuarios de PHP: Advertencia: El argumento proporcionado no es un recurso de resultado de MySQL válido en...
La línea con el error reportado anteriormente Puede ser:
while ($row = mysql_fetch_array($resultado)) {
El parámetro $resultado no es un recurso válido. En inglés significa que mysql_fetch_array no se puede procesar porque la consulta falló. La sintaxis de cualquiera de las consultas no es válida (debe copiar y pegar la consulta en la referencia de la consola MySQL para realizar la prueba) o la conexión a la base de datos falló (en cuyo caso debe volver a verificar el nombre de usuario, la contraseña, etc.).
Prevención de errores
Como primer paso, los codificadores inteligentes pueden tomar las siguientes medidas para eliminar los siguientes errores:
· No piense en agregar un punto y coma al final de cada declaración; esto debería convertirse en un hábito.
· Indique siempre la jerarquía de su código siempre que sea posible. Esto le permitirá ver si olvidó agregar llaves en lugares como llamadas o al final de funciones.
· Utilice un editor con resaltado de sintaxis (como HTML-Kit). Con la ayuda de dicho editor, puede determinar si olvidó agregar una cita, si le falta un punto y coma, etc.
Conclusión
En este artículo, comprendemos algunos errores aparentemente sin sentido que el compilador PHP puede informar. Necesitamos aplicar lo que aprendemos a cómo evitar errores y cómo corregirlos cuando ocurren. La depuración es una de las partes más importantes del trabajo de un desarrollador. Mejorar la eficiencia de la depuración puede acelerar en gran medida el progreso de todo el trabajo y acortar el tiempo necesario para completar un proyecto. También puede reducir significativamente la presión mental causada por fallas del código.