0

我最近注意到这一点,__METHOD__并且__CLASS__在扩展类时不返回正确的名称。当我为替代方法编写方法并尝试使用 name__METHOD__时,出现以下错误。

解析错误:语法错误,意外的 T_METHOD_C,期待 T_STRING

$myclass = new myclass();
echo $myclass->__METHOD__() . '<br />';

class myclass
{
    function __METHOD__() {
        return get_class($this) . '::' . __FUNCTION__;
        // return __METHOD__;
    }
}

似乎 PHP 不允许在函数/方法名称中使用魔法常量。我找不到有关此限制的官方文档。我在哪里可以找到它?

感谢你的信息。

4

2 回答 2

0

__METHOD__被称为魔术常数,这意味着它可以被打印出来,不能被用户修改。您也不能将其用作函数名称。这不是限制。就是这样,魔法常量的用途,主要用于调试。

php.net 页面 -魔术常量

还要检查变量函数。语言结构不能用作变量函数名称。

于 2012-10-06T08:08:30.797 回答
-1

显然,魔术常量是特殊的——它们比用户定义的常量有更多的限制。它们更像是语言关键字而不是常量。

它似乎没有在文档中说出来,但它在经验上是正确的。

于 2012-10-06T10:48:32.273 回答