Recently I was reading php documentation and found interesting note in string section:
Functions, method calls, static class variables, and class constants inside {$} work since PHP 5. However, the value accessed will be interpreted as the name of a variable in the scope in which the string is defined. Using single curly braces ({}) will not work for accessing the return values of functions or methods or the values of class constants or static class variables.
See www.php.net/manual/en/language.types.string.php
It says, that I can't use curly syntax to get value returned by object's method call. Is it a mistake in manual or I misunderstood it, because I tried the following code and it works just fine:
<?php
class HelloWorld
{
    public static function hello() 
    {
        echo 'hello';
    }
}
$a = new HelloWorld();
echo "{$a->hello()} world";
                PHP DOC Says
will not work for accessing the return values of functions or methods or the values of class constants or static class variables
$a->hello() is not how to call a static method in PHP and also not a constants or static class variables This is what they mean :
class HelloWorld {
    const A = "A";//                <---- You can not use it for this 
    public static $B = "B";         <---- or this  
    public static function hello() {
        echo 'hello';
    }
}
$a = new HelloWorld();
$A = "{HelloWorld::A} world";       <-------- Not Work
$B = "{HelloWorld::$B} world";      <-------- Not Work
$C = "{HelloWorld::hello()} world"; <-------- Not Work
If you now try
$A = "X";    // If you don't define this it would not work
$B = "Y" ;   //<------------- -^
echo "{${HelloWorld::A}} world";  
echo "{${HelloWorld::$B}} world"; 
Output
X world           <--- returns X world instead of A
Y world           <--- returns Y world instead of B
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With