Suppression de fonction

Petit nouveau ! | 4 Messages

20 août 2011, 01:22

Bonjour,

Voilà le pb.
J'inclus un fichier php qui contient des fonctions dont une qui s'appelle translate(...).
Je voudrais supprimer cette fonction parce qu'ensuite ...
J'inclus un autre fichier php avec d'autres fonctions dont une qui s'appelle aussi translate().

Si je ne supprime pas ma fonction entre les deux includes, j'obtiens une belle erreur de type cannot redeclare (et en plus, seule la deuxième me sert).

Savez-vous comment faire ?

Merci de votre aide,

Sylvain

ViPHP
AB
ViPHP | 5818 Messages

20 août 2011, 05:00

Lors de la déclaration de tes fonctions tu peux utiliser function_exists
<?php
if (function_exists('ma_fonction')) {
    function ma_fonction ()
    {

    }
}
?>
De la sorte seule la première fonction rencontrée sera déclarée et tu n'auras plus de pb avec le chargement de la deuxième (qui ne sera pas utilisée).

Mammouth du PHP | 2278 Messages

20 août 2011, 10:00

Le problème, c'est que je crois avoir compris que c'est de la première qu'il ne veut pas....
Impossible;
http://de2.php.net/manual/fr/functions.user-defined.php
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

ViPHP
xTG
ViPHP | 7331 Messages

20 août 2011, 10:02

Jettes un oeil aux namespace, cela devrait résoudre ton problème. ;)

Petit nouveau ! | 4 Messages

20 août 2011, 12:52

Bonjour,

Merci à tous pour vos réponses.

@sirakawa : effectivement, c'est la première fonction qui ne m'intéresse pas. Pas de chance !
@xTG : C'est vrai que ça aurait pu être une bonne solution mais il se trouve que je ne maîtrise pas la déf de ces 2 fcts.

En fait, j'essaye d'utiliser dans un environnement Prestashop les fonctions et utilitaires Wordpress. Et ça marche très bien avec une solution particulièrement simple, sauf dans l'admin de la boutique parce que :
- wordpress déclare une fonction translate
- Prestashop en déclare une aussi pour son admin. Et bien sûr c'est celle-là qui est importante pour l'admin !

Et pas moyen d'inverser les déclarations. Bon, je vais réfléchir et tester d'autres méthodes.

Dommage !

Sylvain

Petit nouveau ! | 4 Messages

20 août 2011, 14:30

Résolu. J''utilise simplement une inclusion conditionnelle en détectant que je ne suis pas dans l'admin. Ok pour mon cas mais dommage qu'on ne puisse pas en PHP travailler plus l'introspection des fonctions.

devlop78
Invité n'ayant pas de compte PHPfrance

20 août 2011, 15:36

Oui Dommage moi aussi j'en ai eu besoin un moment, tu peux marquer le sujet comme clos ;)

ViPHP
AB
ViPHP | 5818 Messages

20 août 2011, 19:37

Le problème, c'est que je crois avoir compris que c'est de la première qu'il ne veut pas....
Impossible;
http://de2.php.net/manual/fr/functions.user-defined.php
Ah oui j'ai lu un peu vite, et je pensais que c'était deux fois la même fonction (et qui donc portaient le même nom)...

Mammouth du PHP | 2278 Messages

20 août 2011, 22:57

Comme quoi, il faut tout lire avant de se précipiter pour dire "Enfantin, mon cher Watson, ya qu'à lire la doc page 31490, alinea 31252, sous-rubrique azerty_qwerty, ...":

il s'agit de deux fonctions différentes définies dans deux fichiers différents et portant le même nom. Comme les deux fichiers sont inclus systématiquement l'un après l'autre par des fonctions d'origine différente qu'il ne semble pas que l'auteur puisse modifier sans risque, il y a tentative de redéfinition. L'initiateur du sujet souhaiterait que ce fût la deuxième définition qui fût utilisée...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

ViPHP
AB
ViPHP | 5818 Messages

21 août 2011, 04:46

L'initiateur du sujet souhaiterait que ce fût la deuxième définition qui fût utilisée...
Assoiffé ! :P