访问类对象的静态方法

时间:2014-04-04 21:41:05

标签: php oop

在尝试访问类变量的静态方法时,我在类中有一个非常奇怪的语法错误。

class VendorImport {
    //$factory is an instance of another class with a static method get()
    protected $factory;

    public function getInstance() {
        //method 1 works
        $factory = $this->factory;
        return $factory::get();

        //method 2 throws a syntax error
        return $this->factory::get();
    }
}

方法2的正确语法是什么?

1 个答案:

答案 0 :(得分:2)

只需使用常规语法来调用非静态方法 - 它也适用于静态方法:

// instead of `return $this->factory::get();`
return $this->factory->get();

Demo。但是有一个缺点:现在在这里调用静态方法并不明显。但话说回来,人们不能在同一个类中以相同的名称定义两个方法 - 静态和非静态。