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

时间:2013-06-07 21:50:15

标签: php

我班的模特是这样的:

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

我无法重现错误(上面的代码似乎有效)。

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

3 个答案:

答案 0 :(得分:4)

这是语法错误:

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

答案 1 :(得分:2)

可能还有其他代码被执行。方法format中调用方法bb未在您提供的代码中调用,但可能在别处调用,并在设置日期之前调用。

答案 2 :(得分:2)

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