类初始化错误:在非对象上调用成员函数


Class Initialization Error: Call to a member function on a non-object?

我们班的模型是这样的:

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();

调用new Foo()时得到:Fatal error: Call to a member function format() on a non-object

我无法重现这个错误(上面的代码似乎可以工作)。

上面的代码现在是错误的精确副本。

语法错误:

print_r($this->Date->format('Y');
                              ^^^^  missing closing paren

由于在使用new Foo()创建类实例时发生错误,我会怀疑类中有一个方法foo()。因为没有__construct(),所以方法foo()被认为是构造函数并被执行。这会直接或通过调用其他方法触发错误。

可能还执行了其他代码。方法format在方法b中调用。在您给出的代码中没有调用b,但它可能在其他地方调用,并且在设置日期之前。