Page 1 sur 1
[R] équivalent de __FUNCTION__ en PHP?
Posté : dim. 14 nov. 2010 10:51
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!
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
Re: [..] équivalent de __FUNCTION__ en PHP?
Posté : dim. 14 nov. 2010 17:17
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.
Re: [..] équivalent de __FUNCTION__ en PHP?
Posté : dim. 14 nov. 2010 18:05
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.
Re: [..] équivalent de __FUNCTION__ en PHP?
Posté : dim. 14 nov. 2010 18:21
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.

Re: [..] équivalent de __FUNCTION__ en PHP?
Posté : dim. 14 nov. 2010 19:47
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
Re: [..] équivalent de __FUNCTION__ en PHP?
Posté : dim. 14 nov. 2010 19:48
par Tlem
C'est en
image code, ce que j'ai dit en texte.

Re: [..] équivalent de __FUNCTION__ en PHP?
Posté : dim. 14 nov. 2010 20:00
par timmalos
Absolument

Mon 'Ou encore' n'est pas bien choisi, mais il voulait dire : Voila ce que veut dire Tlem

Re: [..] équivalent de __FUNCTION__ en PHP?
Posté : dim. 14 nov. 2010 20:22
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!
Edit: C'est bien R qu'on doit mettre entre [] pour dire que le sujet est résolu?
Re: [R] équivalent de __FUNCTION__ en PHP?
Posté : dim. 14 nov. 2010 21:50
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.

Re: [R] équivalent de __FUNCTION__ en PHP?
Posté : mar. 16 nov. 2010 13:15
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
Re: [R] équivalent de __FUNCTION__ en PHP?
Posté : mar. 16 nov. 2010 13:57
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 ...

Re: [R] équivalent de __FUNCTION__ en PHP?
Posté : mar. 16 nov. 2010 14:15
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.
Re: [R] équivalent de __FUNCTION__ en PHP?
Posté : mar. 16 nov. 2010 16:41
par pitibalrog
Un pré-compilateur? Je ne connaît pas ... il va falloir que je me renseigne.
Merci pour l'indice

Re: [R] équivalent de __FUNCTION__ en PHP?
Posté : mar. 16 nov. 2010 16:59
par Iste
Il s'agit d'un script qui va lire vautre script et le modifier.
En gros, il faudrait remplacer les
par des
et rajouter une déclaration de $MAGLOBAL au début.
Si vous voulez essayer, penchez vous sur StringRegExpRemplace()
Re: [R] équivalent de __FUNCTION__ en PHP?
Posté : mar. 16 nov. 2010 17:49
par matwachich
Hey Iste, pourquoi faire simple quand on peut faire compliqué!!!
Il suffit d'ajouter une abréviation genre:
Mais il est vrai que un pré-compilateur ça pourrait servir dans des trucs plus compliqué que ça!
Re: [R] équivalent de __FUNCTION__ en PHP?
Posté : mer. 17 nov. 2010 14:22
par pitibalrog
OK, je regarderais ça et à la limite ça me permetra de n'activer ce genre de log qu'au debug
Merci
