{}标记回显“{$ 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()

    链接地址: http://www.djcxy.com/p/59547.html

    上一篇: { } mark in echo "{$e

    下一篇: Hyphens in Keys of Object