39

我有一个名为 parseDate 的函数,但是当我在我的 php 页面(它是一个 joomla 组件页面)上调用它时,我得到了致命错误:无法重新声明 parsedate()(之前在模板/ja_zeolite/assets/functions.php:2 中声明)第 21 行的模板/ja_zeolite/assets/functions.php

第 2 行是函数 parsedate($data),第 21 行是 }(函数结束)。功能是:

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;
}

我也尝试更改名称功能,但它仍然不起作用。

为什么?

4

2 回答 2

103

您(或 Joomla)可能多次包含此文件。将您的函数包含在条件块中:

if (!function_exists('parseDate')) {
    // ... proceed to declare your function
}
于 2012-06-07T11:18:06.890 回答
17

删除该功能并检查以下输出:

var_dump(function_exists('parseDate'));

在这种情况下,请更改函数的名称。

如果你得到错误,你将包含该函数的文件两次,替换:

include

经过

include_once

并替换:

require

经过

require_once

EDIT : I'm just a little too late, post before beat me to it !

于 2012-06-07T11:22:54.153 回答