Impossible de redéclarer une fonction

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Impossible de redéclarer une fonction

Re: Impossible de redéclarer une fonction

par devlop78 » 06 déc. 2011, 03:14

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 ...

Re: Impossible de redéclarer une fonction

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

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

par xTG » 05 déc. 2011, 11:58

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.

Impossible de redéclarer une fonction

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

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