PHP对静态类成员的访问不正确

PHP对静态类成员的访问不正确,php,static,phpunit,Php,Static,Phpunit,我有一个类,它的成员变量是静态类的模拟实例,当我尝试引用静态方法时,我对静态类成员的访问不正确: class Foo { private my_static_class; public testmethod() { $this->my_static_class = mock_of_static_class; $this->my_static_class::static_method(); // Incorrect access to

我有一个类,它的成员变量是静态类的模拟实例,当我尝试引用静态方法时,我对静态类成员的访问不正确:

class Foo {
    private my_static_class;

    public testmethod() {
        $this->my_static_class = mock_of_static_class;
        $this->my_static_class::static_method(); // Incorrect access to static class member 
    }
}
使用->而不是::似乎也解决不了问题,我最终得到了

Call to a member function static_method() on a non-object

编辑:我使用的框架以字符串形式返回模拟实例

如果您仅以字符串形式获取模拟类,请创建它的实例

$this->my_static_class = new $mock_of_static_class_as_string();
如果只想调用静态方法,请使用:


如何创建静态类的mock?使用Box的Shmock框架。我发现shmock只作为字符串返回。你能发布你是如何创建你的mock的吗?我认为事情的发展与你预期的不完全一样。如果返回的模拟只是一个字符串,那么您应该得到的是解析错误,而不是发生了什么。
call_user_func(array($mock_of_static_class_as_string, 'static_method'));