1

我试图从同一个类的另一个方法中的闭包内部调用一个类的私有静态方法,但我找不到正确的方法......即使使用引用私有方法......我可以引用私有变量并传递它,但无法引用私有方法... $refMethod = array('App','_onEvent'); 使用 call_user_func($refMethod) 将抛出该方法是私有的...我也尝试使用带有 PHP 5.4 版本的 ReflectionClass (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
    }
}

好吧,我知道闭包没有范围,但是...任何传递私有上下文的方法(因为闭包在类内部)来完成这样的事情?谢谢你的灯!

编辑:我确实想做这个答案,但这只是抛出了伟大的

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

4

1 回答 1

1

好的伙计们,

它在 PHP 5.4 上效果更好,我的升级不太好,我终于在升级 php 版本时摆脱了无聊的并发症,现在直接的解决方案有效:

直接调用 self::privateMethod() 不会再抛出“self is nothing inclosure ...”

Appart from that, 你知道从现在开始 (5.4), (0 == 'anystring') 现在是 TRUE 了,呵呵!现在需要在任何地方使用严格相等,精彩升级:-s

于 2013-07-14T16:00:14.673 回答