2013-03-06 181 views
2

我有以下类与静态变量。我如何从匿名PHP函数中访问类的静态函数?从PHP匿名函数访问变量

class MyClass { 
    public static function MyFunction(mylocalparam){ 
     MyStaticClass:MyStaticMethod(function(myparam) use(mylocalparam){ 
     MyClass::MyFunction2(mylocalparam); 
    }); 
    } 

    private static function MyFunction2(someobject){ 
    } 
} 

我无法从匿名类中访问函数“MyFunction2”。你能请教如何纠正这个问题吗?

回答

3

不会发生。您需要制作静态功能public。匿名函数不在MyClass的范围内运行,因此无法访问其中包含的方法private

1

静是不可能的,但如果你想你可以把你想通过参数来调用作为callback类型的方法。

如果你改变了整个班级是一个实例类(删除所有static关键字),那么你可以使用$this匿名函数中调用你在类的任何方法。

从PHP手册:

闭包也可以继承父范围的变量。

按规定:

在5.4.0版本$这可以在匿名函数中使用。

class MyClass { 
    public function MyFunction($mylocalparam){ 
     MyStaticClass:MyStaticMethod(function($myparam) use($mylocalparam){ 
     $this->MyFunction2($mylocalparam); 
    }); 
    } 

    private function MyFunction2($someobject){ 
    } 
}