[PHP] Fonction qui renvoie le n° de ligne ?

[Résolu/Fermé]
Signaler
Messages postés
2997
Date d'inscription
mercredi 7 septembre 2005
Statut
Contributeur
Dernière intervention
3 juin 2013
-
 Utilisateur anonyme -
Bonjour.

J'aimerais savoir s'il existe une fonction PHP qui renvoie le n° de ligne dans laquelle elle est appelée.

Par exemple si je suis sur la ligne 340 de mon script et que j'appelle cette fonction, j'aimerais qu'elle renvoie 340.

Un peu comme quand PHP renvoie des erreurs en indiquant le numéro de la ligne qui pose problème...

Merci.

6 réponses

Messages postés
2997
Date d'inscription
mercredi 7 septembre 2005
Statut
Contributeur
Dernière intervention
3 juin 2013
467
Re !

Finalement j'ai trouvé.

Le n° de ligne courante est stockée dans une constante PHP prédéfinie : __LINE__

D'ailleurs, si d'autres personnes sont intéressées, une constante __FILE__ contient le nom du fichier.

Merci.
10
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 42674 internautes nous ont dit merci ce mois-ci

Excellent! "Quel interêt à ça ?" : je ne pense pas qu'il faille être méprisant car justement, celà très pratique pour débugguer car le fichier log d'erreur n'est pas toujours suffisant pour se depatouiller de certaines situations! :)

Encore merci donc de ce pré post, or j'en ai besoin now! :)

C ya les kids lol.

Salut !

Je r'ouvre ce post un peu vieux pour répondre à sp00m' (et aux autres ^^) qui se demandent si on peut éviter de passer le n° de ligne en paramètre.

La soluce, c'est de passer par la "pile d'appel" de PHP en utilisant la fonction "debug_backtrace()".

Pour plus d'infos allez jeter un coup d'oeil ici : https://www.php.net/manual/fr/function.debug-backtrace.php
Quel interêt à ça ?

Sinon ,une solution:

tu lis le fichier de ton script

$array_script=file("script.php);

ensuite tu parcours cet array (fonction array_search()) pour rechercher le nom de ta fonction
(attention ligne complète: function xxxxx())
le numero de la cle renvoyé sera ton numéro de ligne
Messages postés
2997
Date d'inscription
mercredi 7 septembre 2005
Statut
Contributeur
Dernière intervention
3 juin 2013
467
Et bien en fait j'ai un script qui commence à être un peu long et j'ai pas mal de conditions if dedans qui, selon le résultat, changent la valeur de certaines variables (réussite ou échec de certaines étapes).

Je génère ensuite un rapport qui reprend les valeurs de ces variables.

Mais j'aimerais que, en plus de me dire qu'il y a eu un échec, il me soit indiqué la ligne à laquelle l'échec a été constaté (ligne à laquelle la variable a changé de valeur).

Faire quelque chose du genre
if (mail( ... ))
{
     $MaVariable="OK";
}
else
{
     $LigneCourante=Fonction_PHP_Qui_Renvoie_La_Ligne_Courante();
     $MaVariable = "ECHEC ligne $LigneCourante";
}

Comme ça je saurai quelle condition if a foiré (j'en ai plusieurs à contrôler de la même manière).

Parce que sinon c'est galère, ou alors il faudrait que je mette un numéro d'erreur unique à chaque fois pour pouvoir ensuite repérer le problème dans le code.

@+
Bonjour,

je souhaiterais faire la même chose,

les variables __LINE__ et __FILE__ indiquent le n° de ligne et nom de fichier de l'endroit où sont écrites ces variables. Ce qui veut dire qu'il faut les passer en paramètre à la fonction ?

N'y a-t-il pas moyen de récupérer ces informations à l'intérieur de la fonction elle-même ? (la fonction doit bien savoir qui l'a appelé et où).

Merci pour votre aide
Cordialement
Certes, ce post est un peu vieux, mais je me pose la même question d'Eric-40 ^^ Pour l'instant, je passe mes __LINE__ en paramètres de mes fonctions de débogage. Y'a pas une méthode plus optimale ?

Merci !