Wpadłem dziś na bardzo dziwne zachowanie w niektórych z naszych kodów PHP. Mamy klasę do obsługi plików. To mniej więcej tak:niepubliczne zarezerwowane słowo?
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;
}
}
Wyglądało to całkiem normalne dla nas, ale funkcja $ this-> Prześlij() nigdy nie wrócił bynajmniej NULL. Sprawdziliśmy, czy działa właściwa funkcja. Wycofaliśmy jego wartość zwracaną, zanim została zwrócona. Próbowaliśmy tylko zwracać wartość true lub nawet ciąg znaków. Wszystko sprawdzało się dobrze. Ale $ this-> upload nadal jest oceniany jako NULL. Ponadto w dziennikach nie było nic, a ERROR_ALL jest włączony.
W irytacji zmieniliśmy nazwę funkcji na foo_upload. Nagle wszystko działało. "upload" nie znajduje się na liście PHP reserved words. Ktoś myśli, dlaczego funkcja klasy o nazwie "upload" nie powiedzie się?
Czy umieściłeś echo w funkcji przesyłania? –
Czy może być gdzieś przesłonięty? – Greg
@ Chacha: Wprowadziliśmy echo do funkcji przesyłania. Dało to oczekiwane wartości. @Greg: Klasa AFile nie ma dzieci (jeszcze), więc jej metody nie powinny być nadwerężone. – dnagirl