Maison >développement back-end >tutoriel php >Analyse des erreurs PHP
Même les programmeurs expérimentés sont voués à commettre des erreurs pendant le processus de programmation. Les messages d'erreursont non seulement inutiles mais souvent frustrants si le développeur ne peut pas les remarquer et comprendre ce que signifie le message d'erreur du compilateur, donc une meilleure compréhension des messages d'erreur peut aider à gagner considérablement du temps sur la recherche et la correction du contenu erroné.
Déclaration de variable : Si vous déclarez une variable dans une instruction comme suit : $var = 'value'; le compilateur trouvera d'abord la valeur de la moitié droite de l'instruction , c'est cette partie de l'instruction qui provoque souvent des erreurs. Si vous utilisez une syntaxe incorrecte, vous obtiendrez une erreur d'analyse.
Par exemple, Erreur d'analyse : Erreur d'analyse, T_
WHILE inattendu dans c:program filesapache groupapachehtdocsscript.php à la ligne 19 Les erreurs d'analyse se succédaient et PHP arrêtait d'exécuter le script après la première erreur d'analyse à chaque fois que l'erreur précédente était déterminée. De plus, les erreurs d'analyse contiennent très peu d'informations, avec presque aucun rapport sur le numéro de ligne où l'erreur s'est produite. Par exemple, des mots-clés prédéfinis sont utilisés dans l'expression
, par exemple : while = 10 ; while est un mot-clé prédéfini et ne peut pas se voir attribuer de valeur. Les mots-clés prédéfinis incluent while, function, etc. Nous ne pouvons pas utiliser ces mots-clés prédéfinis pour nommer des variables, sinon le compilateur signalera une erreur. Parmi eux, T_IF représente if(), T_WHILE représente while(), T_FOR représente for(), etc. Erreurs courantes :
guillemets manquants dans la chaîne
, etc. De plus, les accolades (}) ne sont pas utilisées pour terminer une fonction ou une boucle, par exemple : function UselessFunction() {for($ i < 0; $i < 10; $i++){
}
générera l'erreur suivante :
Puisque la fonction UselessFunction ne se termine pas par une accolade (}), le compilateur PHP continuera à rechercher l'accolade fermante jusqu'à ce qu'elle atteigne la fin du fichier. Étant donné que le compilateur ne trouve pas d'accolade correspondante, il signale une erreur de fin de fichier.
Si la hiérarchie du code est correctement reflétée, les messages d'erreur deviendront très évidents. Sinon, le code sera très difficile à déboguer. Par conséquent, assurez-vous d'indiquer la structure hiérarchique du code, ce qui permettra aux développeurs ultérieurs d'améliorer plus facilement le code.
MySQL Erreur :
resource in...La mauvaise ligne signalée ci-dessus peut être : while($row =
mysql_fetch_array($result)) {} Le paramètre $result n'est pas valide ressource, car query
a échoué et mysql_fetch_array ne sera pas traité. Toute requête avec une syntaxe invalide ou un échec de connexion à la base de données doit être testée dans la console MySQL. Erreurs plus faciles
Notez la différence entre
echo : echo et Print sont tous deux utilisés pour la sortie, mais il existe encore des différences subtiles entre les deux. Il n'y a pas de valeur de retour après la sortie d'écho, mais print a une valeur de retour et renvoie false lorsque son exécution échoue. Par conséquent, elle peut être utilisée comme une fonction normale, par exemple, si $r = print "Hello World" est exécuté, la valeur de la variable $r sera 1. De plus, l'instruction echo dans le code s'exécute légèrement plus rapidement que l'instruction print.
Notez la différence entre une chaîne vide ('') et
Distinguer la différence entre == (égal ET) et === (ET congru) :
Les deux appartiennent à l' opérateur de comparaison , == (égal) Il compare uniquement si les valeurs sont égales, tandis que === (tous égaux) compare non seulement si les valeurs sont égales, mais compare également si les types sont égaux, ce qui est plus strict.
Distinguer la différence entre include et require : Les fonctions de
include() et require() sont fondamentalement les mêmes, mais dans l'utilisation, il existe également quelques différences. include() est une fonction d'inclusion conditionnelle, tandis que require() est une fonction d'inclusion inconditionnelle. Par exemple, dans le code suivant, si la variable $a est vraie, le fichier a.php sera inclus : if($a){
include("a.php");
}
Et require() est différent de include(). Quelle que soit la valeur prise par $a, le code suivant inclura le fichier a.php :
if($a){
require( "a .php");
>
En termes de
gestion des erreurs, utilisez l'instruction include. Si une erreur d'inclusion se produit, le programme ignorera l'instruction include bien que le message d'erreur le fasse. s'affichera, le programme continuera à s'exécuter. Cependant, l'instruction require provoque une erreur fatale.
set et vide : empty sert à déterminer si une variable est "vide", tandis que isset sert à déterminer si une variable a été mis en place.
Lors de l'accès à des variables ou méthodes membres dans une classe PHP, si elle est référencée par
Si une variable ou une méthode est déclarée const (constant) ou static (staticattribut), alors l'opération de domaine doit être utilisé l'opérateur ::, et si la variable ou la méthode référencée n'est pas déclarée comme const ou static, alors utilisez l'opérateur de pointage ->.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!