从 PHP 中的代码引用静态方法



有没有办法引用一个类静态方法,以便在不使用字符串的情况下与call_user_func一起使用?

现在,我知道在User类中调用register方法的唯一两个选项是:

call_user_func([User::class, 'register']);
call_user_func(User::class . '::register');

这两种方式都需要使用字符串来标识方法,这使得代码无法重构。

例如,对于例如属性,我正在使用这种工作正常的解决方法:

class User {
/**
* @return static
*/
public static function prop()
{
return new PropertyName();
}
}
class PropertyName
{    
public function __get($name)
{
return $name;
}
}

所以我可以在支持自动完成和重构的情况下编写这个:

User::factory()
->where(User::prop()->email, $email)
->get_one()

回答问题"有没有办法引用一个类静态方法,以便在不使用字符串的情况下与call_user_func一起使用? - 是的

但我不确定这是你想要的:D

class Foo {
public static function bar() {
echo "yaay o/";
}
}
call_user_func(function() {
Foo::bar();
});

最新更新