__METHOD__和__FUNCTION__

Kri*_*ofe 10 php methods const class function

我知道这两者之间的区别,我已经检查了手册.

我有点困惑.我可以__FUNCTION__在类的方法中使用,这表示此方法的名称.当我回应它时,它只输出名称.这里很清楚.

但为什么我可以使用__METHOD__非calss方法.这也只代表正常功能的名称.正常功能是在某些容器中吗?当__METHOD__正常功能回声时,容器什么都没有?

码:

<?php
class dog {
    private $name = 'dog';

    public static function name() {
        echo __METHOD__;
        echo"\n";
        echo __FUNCTION__;
        echo"\n";
    }

}
function test() {
    echo __FUNCTION__;
    echo"\n";
    echo __METHOD__;
}

dog::name();
test();
Run Code Online (Sandbox Code Playgroud)

输出:

ei@localhost:~$ php test.php
dog::name
name
test
test
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.谢谢.

sai*_*tho 15

"Method"基本上只是类(或类函数)中函数的名称.因此,__METHOD__由类名和函数名称(dog :: name)组成,而dog::name只提供函数的名称而不引用它可能所在的类.当__FUNCTION__在类之外调用它时它与__METHOD__因为相同没有类部件可用作前缀.

你可以__FUNCTION__在类之外使用它,因为它是一个魔术常量,而常量如果被误用则不会抛出异常.:) http://php.net/manual/en/language.constants.predefined.php