[R] équivalent de __FUNCTION__ en PHP?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
pitibalrog
Niveau 1
Niveau 1
Messages : 6
Enregistré le : jeu. 25 mars 2010 19:31
Status : Hors ligne

[R] équivalent de __FUNCTION__ en PHP?

#1

Message par pitibalrog »

Bonjour,

Je tenais d'abord pour mon premier message à remercier les responsables de ce site qui m'a déjà grandement aider pour commencer avec AutoIt! :D

Ma question est simple: existe t'il une constante prédéfinie équivalente à __FUNCTION__ en PHP :?:
Pour plus d'info: http://php.net/manual/fr/language.const ... efined.php

J'ai bien trouvé des macros comme @ScriptLineNumber, mais pas ce que je cherche.

Merci d'avance pour vos réponses
Modifié en dernier par pitibalrog le dim. 14 nov. 2010 20:22, modifié 1 fois.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] équivalent de __FUNCTION__ en PHP?

#2

Message par timmalos »

Ceci n'existe pas à première vue, mais quelle est l'utilité souhaitée? Que voulez vous faire? Je suis sur qu'il existe un équivalent en fonction de votre problème.
pitibalrog
Niveau 1
Niveau 1
Messages : 6
Enregistré le : jeu. 25 mars 2010 19:31
Status : Hors ligne

Re: [..] équivalent de __FUNCTION__ en PHP?

#3

Message par pitibalrog »

Merci pour ta réponse, et c'est bien ce que je "redoutais".

Je souhaite utiliser ce type de variable pour mes logs de debug.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] équivalent de __FUNCTION__ en PHP?

#4

Message par Tlem »

Je n'ai pas cherché dans la doc si une telle variable existe, mais le plus simple serait sans doute de gérer vous même cette partie.
Avant de lancer la fonction vous initialisez une variable avec le nom de celle-ci, puis vous la 'libérez' ou modifiez en sortie de fonction. Comme cela, la variable contient le nom de la fonction qui l'a initialisée. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] équivalent de __FUNCTION__ en PHP?

#5

Message par timmalos »

Ou encore, en reprenant le format des UDFs d'Autoits:

Code : Tout sélectionner

Func _VotreFonction($sAction, $vOption = "")
    Local Const $sFuncName = "_VotreFonction"
        ;Traitement...
    SetError(__FFError($sFuncName, "$sAction: " & $sAction))
EndFunc

Func __FFError($sWhere, Const ByRef $i_FF_ERROR, $sMessage = "")
    Local $sOut, $sMsg
    Sleep(200)

    Switch $i_FF_ERROR
        Case $_FF_ERROR_Success
            Return $_FF_ERROR_Success
        Case $_FF_ERROR_GeneralError
            $sOut = "General Error"
        Case $_FF_ERROR_SocketError
            $sOut = "Socket Error"
        Case $_FF_ERROR_InvalidDataType
            $sOut = "Invalid data type"
        Case $_FF_ERROR_InvalidValue
            $sOut = "Invalid value"
        Case $_FF_ERROR_Timeout
            $sOut = "Timeout"
        Case $_FF_ERROR_NoMatch
            $sOut = "No match"
        Case $_FF_ERROR_RetValue
            $sOut = "Error return value"
        Case $_FF_ERROR_SendRecv
            $sOut = "Error TCPSend / TCPRecv"
        Case $_FF_ERROR_ReplException
            $sOut = "MozRepl Exception"
        Case $_FF_ERROR_SendRecv
            $sOut = "Error TCPSend / TCPRecv"
        Case $_FF_ERROR_InvalidExpression
            $sOut = "Invalid Expression"
    EndSwitch
    If $sMessage = "" Then
        $sMsg = $sWhere & " ==> " & $sOut & @CRLF
        ConsoleWriteError($sMsg)
        If @Compiled Then
            If $_FF_ERROR_MSGBOX And $i_FF_ERROR < 6 Then MsgBox(16, "FF.au3 Error:", $sMsg)
            DllCall("kernel32.dll", "none", "OutputDebugString", "str", $sMsg)
        EndIf

    Else
        $sMsg = $sWhere & " ==> " & $sOut & ": " & $sMessage & @CRLF
        ConsoleWriteError($sMsg)
        If @Compiled Then
            If $_FF_ERROR_MSGBOX And $i_FF_ERROR < 6 Then MsgBox(16, "FF.au3 Error:", $sMsg)
            DllCall("kernel32.dll", "none", "OutputDebugString", "str", $sMsg)
        EndIf
    EndIf

    Return $i_FF_ERROR
EndFunc   ;==>__FFError
 
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] équivalent de __FUNCTION__ en PHP?

#6

Message par Tlem »

C'est en image code, ce que j'ai dit en texte. :P
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] équivalent de __FUNCTION__ en PHP?

#7

Message par timmalos »

Absolument ;) Mon 'Ou encore' n'est pas bien choisi, mais il voulait dire : Voila ce que veut dire Tlem :lol:
pitibalrog
Niveau 1
Niveau 1
Messages : 6
Enregistré le : jeu. 25 mars 2010 19:31
Status : Hors ligne

Re: [..] équivalent de __FUNCTION__ en PHP?

#8

Message par pitibalrog »

Merci pour vos réponses, c'est tout à fait ce que j'avais en tête, mais bon j'ai tellement l'habitude d'utiliser __FUNCTION__ que je voulais savoir si ça existait.

De plus avec __FUNCTION__ ça évite les copier coller malheureux où j'aurais oublié de changer le nom de la fonction.

Donc au final c'est bien ce que je vais faire: utiliser une variable en début de fonction. Et si je voulais le faire carrément laid je pourrais même déclarer cette variable en global et l'utiliser directement dans les fonctions de log sans avoir à la passer en paramètre... :|

Bonne fin de WE à vous! :mrgreen:

Edit: C'est bien R qu'on doit mettre entre [] pour dire que le sujet est résolu?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] équivalent de __FUNCTION__ en PHP?

#9

Message par Tlem »

Oui pour [R].

Ensuite, le fait de déclarer la variable en global, ne fait pas d'elle quelque chose de laid !!!
Au contraire, cela me semblerais plutôt judicieux, car vous pourriez l'utiliser dans une autre partie du code en dehors des fonctions. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [R] équivalent de __FUNCTION__ en PHP?

#10

Message par Iste »

Le Global c'est moche dans des langages objets.
En Autoit on a aucun autre moyen de gérer la persistances des donnée entre deux instructions, si ce n'est en utilisant les Global.
Ce qui est laid, c'est d'utiliser des globals pour passer des parametres, ou autre vilaines chose qu'on peut faire avec le langage
Signez ici
pitibalrog
Niveau 1
Niveau 1
Messages : 6
Enregistré le : jeu. 25 mars 2010 19:31
Status : Hors ligne

Re: [R] équivalent de __FUNCTION__ en PHP?

#11

Message par pitibalrog »

Je ne pensais pas trouvé un front de soutient pour les variables globales ;-)

D'ailleurs savez vous si il y a un autoit objet prévu pour une prochaine version?

Rassurez vous j'utilise aussi des variables globales qui sont en effet indispensables dans certains cas comme le disait Iste. En ce qui concerne ce cas précis de __FUNCTION__ pour mes logs, je trouve quand même plus propre de le passer en paramètre que de l'utiliser en globale. Après du moment que ça fonctionne ... :)
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [R] équivalent de __FUNCTION__ en PHP?

#12

Message par Iste »

Je ne pense pas qu'une version objet d'autoit soit prévue, cela allant a l'encontre du principe de ce langage qui est avant tout la simplicité.
Apres, il faut savoir que, tout comme JS a ses débuts, autoit sais utiliser des objets, on ne peut juste pas en créer.

Sinon, rien ne vous empeche de créer un pré-compilateur pour le faire devenir objet ;)

Plus réalisable, vous pouvez créer un pré-compilateur qui setterait la global utilisé automatiquement a chaque début de fonction.
Signez ici
pitibalrog
Niveau 1
Niveau 1
Messages : 6
Enregistré le : jeu. 25 mars 2010 19:31
Status : Hors ligne

Re: [R] équivalent de __FUNCTION__ en PHP?

#13

Message par pitibalrog »

Un pré-compilateur? Je ne connaît pas ... il va falloir que je me renseigne.

Merci pour l'indice :idea:
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [R] équivalent de __FUNCTION__ en PHP?

#14

Message par Iste »

Il s'agit d'un script qui va lire vautre script et le modifier.
En gros, il faudrait remplacer les

Code : Tout sélectionner

Function nomDeLafonction()
par des

Code : Tout sélectionner

Function nomDeLafonction()
$MAGLOBAL = "nomDeLafonction"
et rajouter une déclaration de $MAGLOBAL au début.

Si vous voulez essayer, penchez vous sur StringRegExpRemplace()
Signez ici
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [R] équivalent de __FUNCTION__ en PHP?

#15

Message par matwachich »

Hey Iste, pourquoi faire simple quand on peut faire compliqué!!!
Il suffit d'ajouter une abréviation genre:

Code : Tout sélectionner

funx =>
Func _()
    Global $__FuncName = ""
EndFunc
Mais il est vrai que un pré-compilateur ça pourrait servir dans des trucs plus compliqué que ça!
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
pitibalrog
Niveau 1
Niveau 1
Messages : 6
Enregistré le : jeu. 25 mars 2010 19:31
Status : Hors ligne

Re: [R] équivalent de __FUNCTION__ en PHP?

#16

Message par pitibalrog »

OK, je regarderais ça et à la limite ça me permetra de n'activer ce genre de log qu'au debug :)

Merci :mrgreen:
Répondre