有什么方法可以引用类静态方法以与call_user_func
一起使用而不使用字符串吗?
现在,我知道在register
类中调用User
方法的唯一两个选项是:
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()
答案 0 :(得分:0)
回答问题“是否有任何方法可以在不使用字符串的情况下引用用于call_user_func的类静态方法?” -是的
但是我不确定这就是你想要的:D
class Foo {
public static function bar() {
echo "yaay \o/";
}
}
call_user_func(function() {
Foo::bar();
});