在字符串中访问对象的方法

Wil*_*One 5 php string string-interpolation

最近我正在阅读php文档,并在字符串部分找到了有趣的注释:

自PHP 5起,{$}内的函数,方法调用,静态类变量和类常量工作.但是,访问的值将被解释为定义字符串的作用域中变量的名称.使用单个花括号({})将无法访问函数或方法的返回值或类常量或静态类变量的值.

www.php.net/manual/en/language.types.string.php

它说,我不能使用卷曲语法来获取object的方法调用返回的值.这是手动错误还是我误解了它,因为我尝试了下面的代码,它运行得很好:

<?php
class HelloWorld
{
    public static function hello() 
    {
        echo 'hello';
    }
}
$a = new HelloWorld();

echo "{$a->hello()} world";
Run Code Online (Sandbox Code Playgroud)

inh*_*han 0

我从这个解释中了解到的是,压力在于

\n\n
\n

(\xe2\x80\xa6) 使用单个花括号\xe2\x80\xa6

\n
\n\n

所以在这个例子中我认为它想说的是:

\n\n

echo "I\'d like an {$beers::$ale}\\n";不会工作,因此单花括号。
\n这就是为什么你应该使用双大括号,第一个大括号将返回静态输出,第二个大括号将返回最终输出,如示例所示:

\n\n
echo "I\'d like an {${beers::$ale}}\\n";\n                  ^ ^           ^^\n
Run Code Online (Sandbox Code Playgroud)\n