在 PHP 中,可以通过类名解析获取完整的类名,如下所示:
Example:
namespace Name\Space;
class ClassName {}
echo ClassName::class;
Output: Name\Space\ClassName
这比使用字符串更好Name\Space\ClassName
直接在代码中进行,因为代码自省(尤其是在 IDE 中)可以直接发现错误。
我想知道类的方法是否有类似的东西 - 这对于回调函数特别有用。
这基本上就是传递回调的方法:
$a = function($callback,$arg) { return $callback($arg); }
$a('getInfo',5);
我不想在这里传递一个字符串(可能会改变),我更愿意这样做:
$a(MyClass::class::getInfo,5);
通过在 IDE 中单击“转到声明”,我可以直接转到getInfo
另外,如果方法不再存在,我会看到错误。有没有办法实现我在这里想做的事情?
事实上,您使用的是可调用类型。 PHP 只允许将方法/函数名称设置为字符串。但如果您使用类和对象,您将有不同的方式来设置回调。例如:
$a = function($callback, $arg) {
return call_user_func($callback, $arg));
}
// call a static method of the class with
// using fullname space and method name as a string
$a('Name\Space\MyClass::getInfo',5);
// call a static method of the class
// with using ::class
$a([MyClass::class, 'getInfo'], 5);
// call a method of an object
$myObject = new MyClass();
$a([$myOject, 'getInfo'], 5);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)