2015-02-14 7 views
2

У меня есть класс, который имеет в качестве переменной-члена экземпляр Mock статического класса, и когда я пытаюсь ссылаться на статические методы, я получаю неправильный доступ к статическому члену класса:PHP неправильный доступ к статическому члену класса

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 

Edit: рамки Я использую возвращает фиктивный экземпляр в виде строки

+0

Как вы создавая макет вашего статического класса? – Schleis

+0

Использование рамки Shmock для Box. Я обнаружил, что shmock возвращается только как строка. –

+0

Можете ли вы опубликовать, как вы создаете свой макет? Я не думаю, что все происходит точно так, как вы ожидаете. Если возвращаемый макет является только строкой, вы должны получать ошибки разбора, а не то, что вы делаете. – Schleis

ответ

0

Если вы получить ck class только как строка, создайте его экземпляр.

$this->my_static_class = new $mock_of_static_class_as_string(); 

Если вы просто хотите вызвать статический метод, используйте call_user_func():

call_user_func(array($mock_of_static_class_as_string, 'static_method')); 
Смежные вопросы