PHP中的 __FUNCTION__ 与 __METHOD__ 等常量前后都有两个下划线(__),是系统预定义的内置常量,但因为返回的值随具体位置而改变,所以被称为魔术变量。
__FUNCTION__:在类中仅返回所在函数/方法的名称,但在命名空间中有所不同(例子如下)。
__METHOD__:返回命名空间、类、函数/方法的名称。
例如:
namespace DemoNamespace{ function function1(){ return __FUNCTION__.'()'.'<br>'.__METHOD__.'()'; } echo function1(); echo '<br>'; class DemoClass { public static function demo() { return __FUNCTION__.'()'.'<br>'.__METHOD__.'()'; } } echo DemoClass::demo(); }
运行效果:
DemoNamespace\function1() DemoNamespace\function1() demo() DemoNamespace\DemoClass::demo()
命名空间的“直属”函数,使用 __FUNCTION__ 与 __METHOD__ 返回的结果是一样的,都是:
命名空间\函数名
类中的函数,使用 __FUNCTION__ 返回的是函数名称本身,使用 __METHOD__ 返回的是:
命名空间\类::方法名