Page 1 sur 1

Impossible de redéclarer une fonction

Posté : 05 déc. 2011, 11:37
par pol2095
Bonjour,

en PHP est-il possible de remplacer par exemple test() par une nouvelle fonction test() différente, j'ai un message d'erreur "Cannot redeclare" ?

merci

Re: Impossible de redéclarer une fonction

Posté : 05 déc. 2011, 11:58
par xTG
Non ce n'est pas possible.
Cela se fait uniquement en POO avec une classe héritée qui peut redéfinir une fonction de la class mère si elle n'est pas de type final.

Re: Impossible de redéclarer une fonction

Posté : 05 déc. 2011, 21:29
par Skw33d
Salut,

Comme le dit bien xTG, il est impossible de redéclarer une fonction mais je te laisse voir avec l'utilisation des espaces de noms qui pourrait peut être te convenir.
http://php.net/manual/fr/language.namespaces.php

Re: Impossible de redéclarer une fonction

Posté : 06 déc. 2011, 03:14
par devlop78
J'allais le dire (pour les namespaces). En fait cela ne revient pas à redéclarer la fonction, puisqu'elle se trouve dans un autre namespace, mais c'est bien là l'une des utilités du namespace. Tu peux aussi déclarer une fonction en fonction d'une situation :

Code : Tout sélectionner

if ($toto == "tombé à l'eau") { function x () { } } else { function x () { } }
En sachant que le création en interne ne se fait pas de la même façon :

- Déjà c'est pas propre
- pas de cache OP-codes correct il me semble dans ce cas
- l'appel à la fonction x devra se faire APRES sa déclaration, ce qui n'est pas le cas en temps normal

Tu peux aussi (puisqu'on parle de php 5.3) créer des "fonctions anonymes" dans des variables :

Code : Tout sélectionner

$x = function ($a, $b) { return $a * $b; }; $x = function($a, $b) { return $a + $b; }; $x (25, 30);
Le plus propre étant évidemment les namespaces. Sinon, c'est surement un problème de méthodologie ...