Comment savoir si une fonction a été appelée

Eléphant du PHP | 85 Messages

17 nov. 2010, 14:59

Salut,

Tout est dans le titre.

Je souhaiterais savoir s'il existe un moyen pour savoir si une fonction dont on connait le nom à été appelé précédemment dans la page.

Exemple, je me connecte à ma bdd, je fais mes requêtes, je ferme ma bdd. Plus loin, je souhaite savoir si la fonction de fermeture de la bdd (mysqli_close) a été appelée.

Je connais debug_print_backtrace, mais il faut alors que je regarde dans le résultat si mysqli_close apparait.
Je veux faire plus simple car je connait la fonction dont je souhaite connaitre l'appel.

Merci

ViPHP
ViPHP | 5462 Messages

17 nov. 2010, 15:08

t'as besoin de ca juste pour mysqli ou pour d'autre utilisation ?

Eléphant du PHP | 85 Messages

17 nov. 2010, 15:11

Pour tout type de fonction, celle intégré à php/sql ou celle créé par moi.

Pourquoi ?
T'as quelque chose pour mysql ?

ViPHP
ViPHP | 5462 Messages

17 nov. 2010, 15:32

Pour tout type de fonction, celle intégré à php/sql ou celle créé par moi.

Pourquoi ?
T'as quelque chose pour mysql ?
je visualise pas trop le besoin enfaite pour mysqli ca me paraisse un peu plus logique dans le sens ou c'est pour voir si la connexion est éteinte, mais si c'est pour d'autre fonction je vois pas trop a quoi ca peu servir ?

Eléphant du PHP | 85 Messages

17 nov. 2010, 17:41

Bah c'est simple, j'ai une routine qui peut en fonction de quelque chose inclure un fichier suivi d'un exit afin d'afficher celui-ci et pas la suite du fichier de base.

Mais en fonction du moment ou l'include se fait, il peut y avoir appel d'une fonction une seconde fois.

ViPHP
ViPHP | 5462 Messages

17 nov. 2010, 17:42

Bah c'est simple, j'ai une routine qui peut en fonction de quelque chose inclure un fichier suivi d'un exit afin d'afficher celui-ci et pas la suite du fichier de base.

Mais en fonction du moment ou l'include se fait, il peut y avoir appel d'une fonction une seconde fois.
et tu peu pas lancer la fonction 2 fois ?

Eléphant du PHP | 85 Messages

18 nov. 2010, 06:51

Si, je peux l'exécuter autant de fois que je le veux, mais si je l'appel 2 fois, boom, erreur, la fonction a déjà été appelée.

ViPHP
ViPHP | 5462 Messages

18 nov. 2010, 11:03

Si, je peux l'exécuter autant de fois que je le veux, mais si je l'appel 2 fois, boom, erreur, la fonction a déjà été appelée.
c'est plus une erreur de conception alors, sinon ce que tu cherche c'est pas possible, même avec xdebug

Eléphant du PHP | 85 Messages

18 nov. 2010, 13:07

Nan, y a pas d'erreur de conception. :wink:
C'est juste une routine qui peut être déclenché par différents facteurs et ce, plus ou moins loin dans l'interprétation de la page php.


Mais, bon, je vais me débrouiller.

Merci.

ViPHP
AB
ViPHP | 5818 Messages

18 nov. 2010, 13:56

Bah tu peux ne la déclarer que si elle ne l'a pas déjà été, pour le reste à savoir si elle a déjà été appelée faut faire ça au niveau de ton script
if (!function_exists("ma_fonction"))
{
function ma_fonction($param) 
{
//...
}

Eléphant du PHP | 85 Messages

19 nov. 2010, 11:21

Ah bah voilà...

Je ne connaissais pas.

Vu la discussion avec stealth35, j'ai vraiment du m'expliquer comme un bouseux...

Merci.

ViPHP
ViPHP | 5462 Messages

19 nov. 2010, 11:39

ah d'accord c'est ca que tu voulais

parce que pour moi :
une fonction dont on connait le nom à été appelé précédemment dans la page
c'est :

test('truc');
------
savoir si test a été appelé

et pas, si y'a déjà une fonction qui s'appaelle 'test' :wink:

ViPHP
AB
ViPHP | 5818 Messages

19 nov. 2010, 17:20

Et oui, effectivement, j'avais déjà lu ce sujet mais je n'avais pas répondu car je n'avais pas la réponse telle que tu l'avais formulée.

C'est ce message qui m'a mis sur la piste :
Si, je peux l'exécuter autant de fois que je le veux, mais si je l'appel 2 fois, boom, erreur, la fonction a déjà été appelée.
...on aurait pu te répondre directement si à la place de
une fonction dont on connait le nom à été appelé précédemment dans la page
tu avais écris
une fonction dont on connait le nom à été déclarée (ou définie) précédemment dans la page
Comme quoi quand on pose des questions il ne faut pas hésiter à bien décrire non seulement ce que l'on veux, mais aussi le problème que l'on rencontre qui nous amène à poser la question, pour que ceux qui nous répondent puissent donner des réponses pertinentes et ainsi tout le monde gagne du temps :)
Modifié en dernier par AB le 19 nov. 2010, 17:22, modifié 1 fois.

Eléphant du PHP | 85 Messages

19 nov. 2010, 17:21

Bah pour moi appeler un fonction, c'est :
function test {}

Et exécuter une fonction c'est :
test('blabla')

Voila donc le pourquoi du comment qui dit le mossieur... :mrgreen:

Donc, fallait dire initialiser une fonction, non ?

ViPHP
AB
ViPHP | 5818 Messages

19 nov. 2010, 17:26

Bah non, si tu prends la définition du mot "initialiser" cela ne veux pas dire ça. Pour moi les mots "déclarer" ou "définir" sont plus appropriés.