PHP, ben sorunsuz bir değişken olarak bir normal işlevini kullanmak mümkün duyuyorum, ama ben statik yöntemi kullanmak nasıl çözemedim. Ben sadece doğru sözdizimi eksik, ya da bu mümkün değildir muyum?
(EDIT: İlk önerilen cevap çalışmak için görünmüyor ben hataları döndü göstermek için benim örnek uzattık.).
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 kullanıyorum - cevap değişiklik çok sürümüne bağlı nedir?)