2013-07-14 3 views
1

Я пытаюсь вызвать частный статический метод класса изнутри замыкания внутри другого метода этого же класса, и я не могу найти правильный путь чтобы сделать это ... даже с использованием использование ссылка на частный метод ... Я могу ссылаться на приватную переменную и передавать ее, но никак не ссылаться на частный метод ... $ refMethod = array ('App », '_ OnEvent'); с call_user_func ($ refMethod) будет бросать метод private ... Я также попытался с ReflectionClass с версией PHP 5.4 (WAMP 32bits), но он говорит, что метод getClosure не существует на экземпляре :(Вызов частного статического метода из замыкания (внутри класса)

class App(){ 
    static public function start(){ 
     new Form('myform', array('submit'=>function($form) use($someVar){ 
      if($anyCondition){ 
       // want to call private self::_onEvent here : any suggestion ? 
      } 
     })); 
    } 
    static private function _onEvent(){ 
     // this is my very private part 
    } 
} 

Ну, я знаю довольно закрытие не имеет рамок, но так ... какое-либо образом передать частному контекст (потому что закрытие внутри класса) для чего-то достичь, как это спасибо за любые огни

EDIT?!: Я точно хочу сделать this answer, но это просто бросьте отлично

не удается получить доступ к себя :: когда ни один класс сфера не является активным

ответ

1

Ok чуваки,

он лучше работает с PHP 5.4, мое обновление не было нормально, я, наконец, избавиться от скучных осложнений при обновлении версии PHP , а теперь прямо решение работает:

вызова непосредственно само :: privateMethod() не будет бросать "я ничего в закрытии ... больше

Appart от того, знаете ли вы, что теперь (5.4), (0 == 'anystring') теперь TRUE, duh! необходимо использовать строгое равное во всем мире, замечательно обновить: -s

Смежные вопросы