JeuWeb - Crée ton jeu par navigateur
Redéclarer une fonction - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Redéclarer une fonction (/showthread.php?tid=3492)



Redéclarer une fonction - phenix - 01-01-2009

Bonjour à tous,

Voila, je voudrais savoir s'il existe un moyen pour redéclarer une fonction qui existe déjà dans PHP.

En faite, je voudrais faire un truc du genre (je sais que sa ne marche pas)
Code PHP :
<?php
function mysql_error()
{
return
mysql_error().'fichier: '.__file__.' ligne: '.__line__;
}
?>

Voila, je doute que ce soit possible, mais on ne sais jamais, peut être que quelqu'un une solution Smile. Le must serait même l'envoie de l'erreur par e-mail xD.

Fin bref...


RE: Redéclarer une fonction - My Hotel - 01-01-2009

A mon avis, et après quelques recherches, c'est impossible, autant te créer une classe SQL qui gèrera tes erreurs, y'a quelques sujets qui en parlent sur la board.


RE: Redéclarer une fonction - wild-D - 01-01-2009

tu te rends compte que ton code serait "une boucle infinie"; car tu aurais une fonction récursive (qui s'appelle elle-même) sans condition de sortie pour la récursion; ben oui, si les mot-clé/fonction interne étaient pas protégée et que tu surcharge comme tu voudrais le faire y aurais un soucis^^

remplace dans ton code mysql_error() par n'importe quoi si tu comprends pas ou est le soucis:

function bidon(){
return bidon().'fichier...';
}



edit:
en plus j'avais pas vu^^
ta fonction te serviras pas à faire ce que tu veux faire (__LINE__ et __FILE__ serait remplacé par la ligne/fichier de la déclaration de ta fonction... et non l'emplacement de ton erreur dans ton code)
une fonction PHP est une fonction, ça n'a rien à voir avec une macro >_<

sinon tu peux regarder du coté de error_log() pour ton envoi d'email.


RE: Redéclarer une fonction - phenix - 01-01-2009

Citation :tu te rends compte que ton code serait "une boucle infinie";

Oui je le sais, ce code est juste pour illustré, c'est plus facile a comprendre comme sa que d'expliquer avec des mots...
Citation :ta fonction te serviras pas à faire ce que tu veux faire (__LINE__ et __FILE__ serait remplacé par la ligne/fichier de la déclaration de ta fonction... et non l'emplacement de ton erreur dans ton code)
une fonction PHP est une fonction, ça n'a rien à voir avec une macro >_<

Sa par contre je le savais pas...

Peut on s'en servir de __line__ comme paramètre de fonction ?

Citation :A mon avis, et après quelques recherches, c'est impossible, autant te créer une classe SQL qui gèrera tes erreurs, y'a quelques sujets qui en parlent sur la board.

Ouais, m'enfin le jeu est déjà bien avancé... j'ai juste toujours remit a plus tard la gestion des erreurs :pleure2:


RE: Redéclarer une fonction - wild-D - 01-01-2009

oui tu peux utiliser __LINE__, etc comme paramètre de fonction.

^^ et pour ton problème tu te crée une fonction générale pour tes erreur genre
function error_msg($err, $file, $line){
return $err.' fichier: '.$file.' ligne: '.$line;
}

et tu utilise des appels genre;
error_msg(mysql_error(),__FILE__,__LINE__);


autre option:
trigger_error() et set_error_handler().


RE: Redéclarer une fonction - Adrien A. - 01-01-2009

Les Exceptions étendues sont peut être une bonne idée pour la gestion des erreurs. Enfin, je trouve que c'est un manière élégante et simple de gérée les erreurs et de faire leur journalisation. Mais ce n'est que mon avis.

Code PHP :
<?php 
function myFunction()
{
throw new
Exception('MyError');
}

try {
myFunction();
}
catch (
Exception $myException)
{
echo
$myException;
}

En cherchant sur le Net tu trouveras plus d'informations, sur les Exception en général, et plus précisément dans PHP.

Bonne chance pour la suite.

http://www.php.net/manual/fr/language.exceptions.php
http://www.php.net/manual/fr/language.exceptions.extending.php


RE: Redéclarer une fonction - Zamentur - 01-01-2009

Avec les espaces de noms, tu peux faire un truc qui ressemble à ce que tu souhaites faire.
Enfin ça me semble la meilleure solution.

http://fr.php.net/manual/fr/language.namespaces.php