我最近注意到__METHOD__
和__CLASS__
在扩展类时没有返回正确的名称。当我为替代方法编写方法并尝试使用名称__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不允许在函数/方法名称中使用魔术常量。我找不到有关此限制的官方文档。我在哪里可以找到它?
感谢您提供的信息。
答案 0 :(得分:0)
__METHOD__
被称为魔术常量,这意味着它可以只是打印而不是由用户修改。您也不能将它用作函数名。这不是限制。这就是方法,意味着使用魔术常量,主要用于调试。
php.net页面 - Magic constants
同时检查variable functions。语言结构不能用作变量函数名称。
答案 1 :(得分:-1)
显然,魔术常量很特殊 - 它们比用户定义的常量有更多的限制。它们更像是语言关键词,而不是常数。
它似乎没有在文档中说出来,但它在经验上是正确的。