你能从PHP中的方法中获取方法名吗?

ale*_*lex 65 php oop methods

可以这样做吗?

public function something() {
    $thisMethodName = method_get_name(); 
}
Run Code Online (Sandbox Code Playgroud)

method_get_name()返回方法的名字?

Kev*_*han 105

当然,你想要魔法常数.

function myFunction() { print __FUNCTION__." in ".__FILE__." at ".__LINE__."\n"; }
Run Code Online (Sandbox Code Playgroud)

php手册中了解更多信息

  • 只是为了厚颜无耻,方法名称的神奇常量是:`__METHOD__` (38认同)
  • 在游戏的后期,但我很惊讶地发现`__METHOD__`实际上返回了`Class :: method`所以`__FUNCTION__`专门返回方法名称...对于*仍然*不像我这样的RTFM的其他人. (32认同)

the*_*art 22

虽然您可以使用魔术常量,但 __METHOD__我强烈建议您查看PHP的反射.这在PHP5中受支持.

$modelReflector = new ReflectionClass(__CLASS__);
$method = $modelReflector->getMethod(__METHOD__);
Run Code Online (Sandbox Code Playgroud)

然后,您可以执行诸如检查签名等内容.


Jan*_*lak 11

正如smartj建议你可以尝试魔术常量__METHOD__,但请记住,这将返回一个包含你的类名的字符串,即'MyClass :: something'.__FUNCTION__相反,使用将返回'某事'.