我班的模特是这样的:
class Foo {
private $date;
public function set_date($date) {
$this->date = $date;
}
// ANSWER: this gets executed as a constructor (case-insensitive)
public function foo() {
print_r($this->date->format('Y'));
}
}
$Foo = new Foo();
我在致电Fatal error: Call to a member function format() on a non-object
时获得new Foo()
。
我无法重现错误(上面的代码似乎有效)。
上面的代码现在是错误的精确副本。
答案 0 :(得分:4)
这是语法错误:
print_r($this->Date->format('Y');
^^^^ missing closing paren
答案 1 :(得分:2)
可能还有其他代码被执行。方法format
中调用方法b
。 b
未在您提供的代码中调用,但可能在别处调用,并在设置日期之前调用。
答案 2 :(得分:2)
由于使用new Foo()
创建类实例时发生错误,我怀疑类中有方法foo()
。因为没有__construct()
,方法foo()
被视为构造函数并被执行。这可能会直接或通过调用其他方法来触发错误。