今天我在一些PHP代碼中遇到了一個非常奇怪的行爲。我們有一個處理文件的課程。它是這樣的:未列出的保留字?
class AFile {
//usual constructor, set and get functions, etc.
//...
public function save() {
//do some validation
//...
if($this->upload()) { //save the file to disk
$this->update_db(); //never reached this line
}
}
private function upload() {
//save the file to disk
//...
return ($success) ? true : false;
}
}
它看起來很正常,但$ this-> upload()函數從來沒有返回任何東西,但不返回NULL。我們檢查了正確的功能正在運行。我們在返回之前回復了它的返回值。我們只嘗試返回一個真正的值甚至是一個字符串。一切都正確地檢查出來。但$ this-> upload仍然評估爲NULL。另外,日誌中沒有任何內容,並且ERROR_ALL處於打開狀態。
在憤怒中,我們將函數名稱更改爲foo_upload。突然間一切都奏效了。 「上傳」不在PHP reserved words的列表中。任何人有任何想法,爲什麼名爲「上傳」的類功能會失敗?
你把上傳功能裏面的回聲? – 2009-07-23 16:43:02
它可能被重寫的地方? – Greg 2009-07-23 16:47:52
@Chacha:我們確實在上傳函數中放入了一個回聲。它給出了預期值。 @Greg:AFile類沒有子類(尚未),所以它的方法不應該被覆蓋。 – dnagirl 2009-07-23 16:58:15