今天我在一些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