我有一个需要“可调用”参数的方法。类型提示。根据上下文,我希望能够提供匿名函数或类。我曾在某些框架中看到过类似的事情,尽管它们经常使用各种类型的解析器和不太严格的类型提示。
这是我想要的目标:
function test(callable $callable) {}
// few ways i want to use it:
test(\Foo\Bar::class);
test(function() {
});
这是事情开始崩溃的地方...
namespace Foo;
class Bar {
public static function __callStatic($method, $args) {
}
}
现在,我一点也不担心:
... autoload stuff, etc...
echo "\Foo\Bar::class"; // --> \Foo\Bar::class
echo \Foo\Bar::class; // --> \Foo\Bar
但是对我来说毛茸茸的是:
... autoload stuff, etc...
echo is_callable('\Foo\Bar::class'); // --> true
echo is_callable(\Foo\Bar::class); // --> false
添加__invoke
并没有帮助,因为我们在这里静态工作,因此除了创建各种解析程序之外,我没有其他想法。
有什么想法吗?
编辑
实际上,只是一种简单的情况是,引号中的':: class'被解释为__callStatic
可以满足的方法,而不是以相同的方式处理PHP处理:: class后缀的方式:分辨率?