那麼,PHP是不愚蠢的。如果PHP說你重新聲明瞭一個函數,那麼你就是。當函數定義出現多次,PHP將拋出一個致命錯誤,類似下面的一個:
Fatal error: Cannot redeclare logToFile() (previously declared in /path/to/script:X) in /path/to/script on line Y
這裏,X是你最初聲明的功能就行了,Y是在您試圖重-declare(不是請致電,如您在問題中所述)的功能。檢查你的代碼找到這條線,並將其刪除。
,避免這樣的錯誤,你可以先檢查功能是否被定義使用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將檢查文件是否已包含在內,如果是,則不包括(需要)它。
你是否有一個右括號? 這個功能是不是在課堂上祕密的?它是在同一個文件中聲明還是包含該文件? – CompuChip
也許你包含了你的函數不止一次的文件? – putvande
如果PHP說你是在重新宣佈它,那麼你這樣做!嘗試更改函數名稱並查看它是否有效。 –