PHPでは、通常の関数を変数として問題なく使用できますが、静的メソッドの使用方法がわかりません。正しい構文が欠落しているだけですか、それとも不可能ですか?
(編集:最初に提案された答えは機能しないようです。返されたエラーを表示するために例を拡張しました。)
function foo1($a,$b) { return $a/$b; }
class Bar
{
static function foo2($a,$b) { return $a/$b; }
public function UseReferences()
{
// WORKS FINE:
$fn = foo1;
print $fn(1,1);
// WORKS FINE:
print self::foo2(2,1);
print Bar::foo2(3,1);
// DOES NOT WORK ... error: Undefined class constant 'foo2'
//$fn = self::foo2;
//print $fn(4,1);
// DOES NOT WORK ... error: Call to undefined function self::foo2()
//$fn = 'self::foo2';
//print $fn(5,1);
// DOES NOT WORK ... error: Call to undefined function Bar::foo2()
//$fn = 'Bar::foo2';
//print $fn(5,1);
}
}
$x = new Bar();
$x->UseReferences();
(私はPHP v5.2.6を使用しています-バージョンによっても答えは変わりますか?)