在魔术引号字符串中回显类属性的语法

时间:2014-08-07 15:24:48

标签: php

我想用魔术引号回显一个属性的值。

$obj = new stdClass;
$obj->foo = 123;
echo "foo: ${obj->foo}";

此操作失败,并显示以下错误消息:

  

解析错误:语法错误,意外的T_OBJECT_OPERATOR   第3行的/foobar/test.php

我知道我可以这样写:

echo "foo: ".$obj->foo;

但是,在这种情况下,大括号不应该起作用吗?

2 个答案:

答案 0 :(得分:3)

你几乎是对的:

echo "foo: {$obj->foo}";

The php reference for complex string syntax说:

  

带字符串的任何标量变量,数组元素或对象属性   可以通过此语法包含表示。简单地写一下   表达式与字符串外部的表达方式相同,并且   然后将其包装在{和}中。由于{无法转义,因此将使用此语法   只有当$紧跟{。

后才能被识别

在我回答的时候我也应该提到这一点,但这个表达式实际上并不需要括号。

echo "foo: $obj->foo";

应该可以正常工作。

答案 1 :(得分:0)

将$ sign移动我的朋友。

<?php
    $obj = new stdClass;
    $obj->foo = 123;
    echo "foo: {$obj->foo}";