静的関数を変数に割り当てて、パラメーターとして送信できるようにします。例えば:
class Foo{
private static function privateStaticFunction($arg1,$arg2){
//compute stuff on the args
}
public static function publicStaticFunction($foo,$bar){
//works
$var = function(){
//do stuff
};
//also works
$var = function($someArg,$someArg2){
//do stuff
};
//Fatal error: Undefined class constant 'privateStaticFunction'
$var = self::privateStaticMethod;
//same error
$var = Foo::privateStaticFunction;
//compiles, but errors when I try to run $var() somewhere else, as expected
//Fatal error: Call to private method Foo::privateStaticMethod() from context ''
$var = function(){
return Foo::privateStaticMethod();
};
}
}
さらにいくつかのバリエーションを試しましたが、どれも機能しませんでした。
この種の機能的なハッキングがPHPで機能することすら期待していませんが、ねえ、誰が知っていますか?
PHPでそれを行うことは可能ですか、それとも使用してハックを考え出す必要がありeval
ますか?
PS:## phpのLawnGnomeは、私が使いたいことを実行できることについて何か言及しましたarray('Foo','privateStaticMethod')
が、彼が何を意味するのか理解できず、彼が忙しそうに見えたので、私は彼にそれ以上圧力をかけませんでした。