В PHP я могу использовать нормальную функцию как переменную без проблем, но я не понял, как использовать статический метод. Я просто пропустил правильный синтаксис, или это невозможно?
(EDIT: первый предложенный ответ, похоже, не работает. Я расширил свой пример, чтобы показать возвращенные ошибки.)
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 - меняется ли ответ в зависимости от версии?)