Я пытался вызвать функцию, и PHP думает, что я пытаюсь переопределить ее
У меня есть функция с именем "logToFile", и я пытаюсь вызвать ее, но PHP думает, что я пытаюсь переопределить ее.
logToFile:
function logToFile($msg) {
$filename = "log.txt";
$fd = fopen($filename, "a");
$str = "[" . date("Y/m/d h:i:s", mktime()) . "] " . $msg;
fwrite($fd, $str . "\n");
fclose($fd);
Мой вызов функции:
logToFile("$user->username kicked $arg1 for $arg2.");
Помогите, пожалуйста?
1 ответ
Ну, PHP не тупой. Если PHP говорит, что вы повторно объявляете функцию, то это так. Когда определение функции встречается несколько раз, PHP выдаст фатальную ошибку, подобную приведенной ниже:
Неустранимая ошибка: невозможно повторно объявить logToFile() (ранее объявленный в /path/to/script: X) в /path/to/script в строке Y
Здесь X - это строка, где вы первоначально объявили функцию, а Y - это то, где вы пытались повторно объявить (не вызывать, как вы указали в вопросе) функцию. Проверьте свой код, чтобы найти эту строку и удалите ее.
И чтобы избежать таких ошибок, вы можете сначала проверить, была ли определена функция, используя function_exists()
а затем попробуйте объявить это:
if (!function_exists('logToFile')) {
function logToFile($msg) {
$filename = "log.txt";
$fd = fopen($filename, "a");
$str = "[" . date("Y/m/d h:i:s", mktime()) . "] " . $msg;
fwrite($fd, $str . "\n");
fclose($fd);
}
} else {
echo 'Trying to re-declare the function';
}
Хотя описанный выше метод поможет вам избежать фатальных ошибок, я настоятельно рекомендую вам выяснить, где вы переопределяете функцию, и исправьте ее. В большинстве случаев это будет связано с несколькими включениями файла, содержащего вашу функцию. В этом случае вы можете просто использовать require_once()
вместо. PHP проверит, был ли файл уже включен, и если так, не включит (потребует) его снова.