IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Système] Cannot redeclare mafonction() (previously declared)


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Par défaut [Système] Cannot redeclare mafonction() (previously declared)
    Bonjour,

    À l'intérieur d'une classe, j'ai déclaré la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    /**
     * Trie les enregistrements selon la colonne donnée
     * Paramètres : string $col (Nom de la colonne à trier)
     **/
        function trier($col) {
          //Le paramètre est passé en variable globale pour atteindre la fonction ci-dessous
          $GLOBALS["col"] = $col;
          //Fonction servant à comparer deux véhicules
          function lineicmp($c1, $c2) {
            switch($GLOBALS["col"]) {
              case "id"          : return $c1->getId()       - $c2->getId();
              case "id_emp"      : return $c1->getEmp()      - $c2->getEmp();
              case "ddq"         : return strcasecmp($c1->getDdq()  , $c2->getDdq());
              case "hdq"         : return strcasecmp($c1->getHdq()  , $c2->getHdq());
              case "odt"         : return $c1->getOdt()      - $c2->getOdt();
              case "ort"         : return $c1->getOrt()      - $c2->getOrt();
              case "dfq"         : return strcasecmp($c1->getDfq()  , $c2->getDfq());
              case "hfq"         : return strcasecmp($c1->getHfq()  , $c2->getHfq());
              case "id_route"    : return $c1->getRoute()    - $c2->getRoute();
              case "id_vehicule" : return $c1->getVehicule() - $c2->getVehicule();
            }
          }
          usort($this->c, "lineicmp");
        }
    J'ai une autre fonction qui va appeler à deux reprises la fonction trier, ce qui cause me message d'erreur suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Fatal error: Cannot redeclare lineicmp() (previously declared) in /var/www/html/monrepertoite/class/cartes.php:453) in /var/www/html/monrepertoire/class/cartes.php on line 453
    Je suppose que c'est probablement que j'utilise mal la notion de callback. Faudrait-il que je sorte ma fonction lineicmp() de trier()?

  2. #2
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 514
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 514
    Par défaut
    Je crois que ça arrive parce que tu as du surement faire un copier/Collier de la fonction avec le mot clés devant "function trier" au lieu de trier tous cour.

  3. #3
    Membre éclairé Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Par défaut
    Voici ma fonction qui appelle trier. Je ne crois pas qu'il y aie une erreur de syntaxe. De toute façon, le problème concerne la fonction lineicmp(). Je ne sais pas trop, je me doute que la solution est probablement très simple mais ce n'est pas ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    /**
         * Renvoie un tableau contenant toutes les cartes débutant un jour donné
         * Paramètre : string $date
         **/
        function getCarteJour($date) {
          $cartes = array();
          $this->trier("hdq");
          $this->trier("ddq");
          foreach($this->c as $id => $carte) {
            if($carte["ddq"] = $date) array_push($cartes, $this->c[$id]); 
          }
          return $cartes;
        }

  4. #4
    Membre Expert
    Avatar de guitou12
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 077
    Par défaut
    Ta fonction lineicmp() est tout simplement déclarée 2 fois et la première fois c'était ici --> cartes.php:453
    Ex développeur Php / J2EE.
    Actuellement reconverti à SharePoint 2013

    Mon blog SP 2013

  5. #5
    Membre éclairé Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Par défaut
    La fonction lineicmp() n'apparaît qu à la ligne 453. Nulle part ailleurs, ni dans aucun autre fichier inclus. Et même si je n'appelle qu'une seule fois ma fonction trier le problème reste entier.

  6. #6
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    On peut déclarer une fonction dans une fonction et tout ceci dans une classe ???

  7. #7
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 514
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 514
    Par défaut
    Trier est appelé combien de fois? car la fonction lineicmp() est déclaré à l'intérieur de Trier. Apres elle rappeler dans le unsort. Je crois qu'il y a un os à ce niveau là.

  8. #8
    Membre éclairé Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Par défaut
    Peut-être que ce pourrait être dû au fait que la version de PHP ici est antérieure à celle avec laquelle j'avais développé mon autre application. Je sais que l'utilisation de la POO en PHP n'existe pas depuis des lustres, peut-être que c'ette possibilité est nouvelle.

  9. #9
    Membre éclairé Avatar de FrankOVD
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juin 2005
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2005
    Messages : 438
    Par défaut
    Je fonctionne avec PHP 5.0.4 et Apache 2.0.54 ça devrait marcher vous croyez?

  10. #10
    Membre émérite
    Avatar de kankrelune
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    763
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 763
    Par défaut
    Essaye en utilisant create_function() dans ta methode... .. .

    @ tchaOo°

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/06/2015, 09h23
  2. Réponses: 13
    Dernier message: 10/12/2011, 17h12
  3. Réponses: 3
    Dernier message: 30/11/2006, 20h54
  4. Message d'erreur absurde du genre Cannot redeclare
    Par philippe281281 dans le forum Langage
    Réponses: 11
    Dernier message: 17/11/2006, 11h35
  5. Cannot redeclare class...
    Par DeezerD dans le forum Langage
    Réponses: 4
    Dernier message: 02/11/2005, 18h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo