可以做这样的事情吗?
public function something() {
$thisMethodName = method_get_name();
}
method_get_name()
返回方法本身的名称。
function myFunction() { print __FUNCTION__." in ".__FILE__." at ".__LINE__."\n"; }
从PHP手册中了解更多信息。
$modelReflector = new ReflectionClass(__CLASS__);
$method = $modelReflector->getMethod(__METHOD__);
正如smartj所建议的那样,您可以尝试使用神奇常量__METHOD__
,但请记住,它将返回一个包含类名的字符串,例如'MyClass::something'。
改用__FUNCTION__
会返回'something'。
使用 __FUNCTION__
我可以这样做:
protected static function getUserResponseByAccessTokenRequestOptions(string $myParam): array
{
return array_merge(parent::{__FUNCTION__}($myParam), [
'myValue' => '123'
]);
}
改为:
protected static function getUserResponseByAccessTokenRequestOptions(string $myParam): array
{
return array_merge(parent::getUserResponseByAccessTokenRequestOptions($myParam), [
'myValue' => '123'
]);
}
如果我想更改方法的名称,它不会在方法内部替换方法的名称。
self::{self::$some_method_name}();
:-) 这样的情况!但是它的文档在哪里呢?(我知道我在过去的几年中看到过它,只是记不清确切的名称了)(一般来说,我知道它是“变量函数”和“可变变量”的组合)。 - jave.web使用__FUNCTION__
是一个不错的选择,替代如下写法:
public function something() {
$thisMethodName = "something";
}
static::class."::".__FUNCTION__
B :: methodName
)虽然有点hack,但你也可以从debug_backtrace()的返回值中找到它。
为什么你不能做这个?
public function something() {
$thisMethodName = "something";
}
__FUNCTION__
可用时,这完全是不必要的。 - too much php
__METHOD__
。 - Anthony__METHOD__
实际上返回的是Class::method
,所以__FUNCTION__
只返回方法名称……对于像我一样仍然不喜欢读手册的人来说,这很重要。 - Chords