从闭包中调用私有静态方法(在类内)

时间:2013-07-14 12:38:40

标签: closures private php-5.3

我试图从同一个类的另一个方法中的闭包内部调用类的私有静态方法,我找不到正确的方法来做... 甚至使用使用引用私有方法...我能够引用私有变量并传递它,但无法引用私有方法... $ refMethod = array('App','_ onEvent');用call_user_func($ refMethod)将抛出的方法是私有的... 我也尝试使用带有PHP 5.4版本的ReflectionClass,(WAMP 32位),但是它说实例上不存在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
    }
}

嗯,我知道完全封闭没有范围,但是......任何方式传递私有上下文(因为闭包在类中)来完成这样的事情?感谢任何灯光!

编辑:我确实想做this answer,但这只是抛出了伟大的

  

当没有类范围处于活动状态时,无法访问self ::

1 个答案:

答案 0 :(得分:1)

好的伙计,

它在PHP 5.4下工作得更好,我的升级还不行,在升级php版本时我终于摆脱了无聊的复杂性,现在直接的解决方案有效:

直接调用self :: privateMethod()不会再抛出'self is nothing in closure ...'

从那个公寓,你知道从现在开始(5.4),(0 =='anystring')现在是真的,呃!现在需要使用严格平等的地方,精彩升级:-s