{}标记回显“{$ e
我读过关于这篇文章的内容,我想知道这部分内容:
try {
//First try getting our user numero uno
$user = new User(1);
//Then, let's try to get the exception
$user2 = new User('not numeric');
} catch( Exception $e ) {
echo "Donkey Kong has caught an exception: {$e->getMessage()}";
}
为什么{$e->getMessage()}
必须用括号括起来?
有没有关于这个PHP手册的任何链接的解释?
我知道如果我们不把括号,它会显示错误,但我想要的是得到解释为什么需要支架。
注意:未定义的属性:Exception :: $ getMessage
这与这是一个复杂的表达有关。 如果您不包括括号,即:
echo "Donkey Kong has caught an exception: $e->getMessage()";
...那么PHP如何知道你想输出的变量? 您可能会尝试执行以下任一操作:
$e
的值,然后输入字符串“ - > getMessage()” $e->getMessage
的值,后跟字符串“()” $e->getMessage()
围绕完整表达式放置括号告诉PHP需要评估并包含在字符串中的完整表达式。
您可以避免使用花括号将您的陈述移出引号:
echo 'Donkey Kong has caught an exception: ' . $e->getMessage();
但要回答您的原始问题:需要大括号来将变量名称分组在一起,以便PHP了解您想要回显的内容。 如果没有大括号,PHP会将语句看作是打印出属性$e->getMessage
和一个字符串'()'
,当然这不是您想要的。
有关更多信息,请参阅成员变量的Stack Overflow问题PHP大括号语法。
我个人建议使用上面提供的语法简单地连接字符串。
在PHP中使用大括号来输出字符串中的变量。 有关更详细的解释,请参阅PHP中字符串中的大括号。
在这种情况下, $e
是一个变量,并且您希望输出$e->getMessage()
。 如果没有花括号,您会看到实际的字符串Donkey Kong has caught an exception: $e->getMessage()
。