有没有办法引用一个类静态方法,以便在不使用字符串的情况下与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();
});