{ } mark in echo "{$e

I read about this Article I wondering about this part:

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()}";
}

why {$e->getMessage()} must be covered in bracket?
Is there any link explanation on php manual about this?

i know if we don't put bracket it will show error, but want i want is to get the explanation why bracket is needed.

Notice: Undefined property: Exception::$getMessage


It has to do with the fact that this is a complex expression. If you don't include the bracket, ie:

echo "Donkey Kong has caught an exception: $e->getMessage()";

...then how does PHP know what variable you're trying to output? You could be trying to do any of the following:

  • output the value of $e , followed by the string "->getMessage()"
  • output the value of $e->getMessage , followed by the string "()"
  • output the value of $e->getMessage()
  • Placing the brackets around the full expression tells PHP the full expression that needs to be evaluated and included in the string.


    You can avoid using curly braces by moving your statement out of the quotes:

    echo 'Donkey Kong has caught an exception: ' . $e->getMessage();
    

    But to answer your original question: curly braces are needed to group variable names together, so that PHP understands what you're trying to echo out. Without curly braces, PHP treats the statement as if you're printing out the property $e->getMessage , and a literal string '()' , which is not what you intended, of course.

    See the Stack Overflow question PHP curly brace syntax for member variable, for more information.

    I personally recommend simply concatenating strings using the syntax I provided above.


    Curly braces are used in PHP to output variables in strings. See Curly braces in string in PHP for a more detailed explanation.

    In this case, $e is a variable, and you want to output the result of $e->getMessage() . Without curly braces you would see the actual string Donkey Kong has caught an exception: $e->getMessage() .

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

    上一篇: 一个类可以实例化另一个类吗? (PHP)

    下一篇: {}标记回显“{$ e