web-dev-qa-db-fra.com

Impossible de redéclarer la fonction php

J'ai une fonction appelée parseDate, mais quand je l'appelle sur ma page php (c'est une page de composant joomla) j'obtiens une erreur fatale: Impossible de redéclarer parsedate () (précédemment déclaré dans templates/ja_zeolite/assets/functions.php: 2) dans templates/ja_zeolite/assets/functions.php sur la ligne 21

la ligne 2 est l'analyse de la fonction ($ data) et la ligne 21 est} (fin de la fonction). La fonction est:

function parseDate($date){
$items = explode('.', $date);
switch($items[1]){
    case 1: $mese = 'Gen'; break;
    case 2: $mese = 'Feb'; break;
    case 3: $mese = 'Mar'; break;
    case 4: $mese = 'Apr'; break;
    case 5: $mese = 'Mag'; break;
    case 6: $mese = 'Giu'; break;
    case 7: $mese = 'Lug'; break;
    case 8: $mese = 'Ago'; break;
    case 9: $mese = 'Set'; break;
    case 10: $mese = 'Ott'; break;
    case 11: $mese = 'Nov'; break;
    case 12: $mese = 'Dic'; break;
    default: $mese = '---';
}
$data_corretta = array(0 => $mese, 1 => $items[2]);
return $data_corretta;
}

J'ai également essayé de changer la fonction de nom, mais cela ne fonctionne toujours pas.

Pourquoi?

32
pindol

Vous (ou Joomla) incluez probablement ce fichier plusieurs fois. Insérez votre fonction dans un bloc conditionnel:

if (!function_exists('parseDate')) {
    // ... proceed to declare your function
}
89
lanzz

Supprimez la fonction et vérifiez la sortie de:

var_dump(function_exists('parseDate'));

Dans ce cas, changez le nom de la fonction.

Si vous obtenez faux, vous incluez le fichier avec cette fonction deux fois, remplacez:

include

par

include_once

Et remplacez:

require

par

require_once

EDIT: Je suis juste un peu trop tard, postez avant de me battre!

16