PHP手册的这一页说,只有命名变量才能通过引用赋值,http://www.php.net/manual/en/language.variables.basics.php.举例说明$bar = &$foo;
是一个有效的赋值,而$bar = &(24 * 7);
不是。
然而,在关于可变范围的页面中,http://www.php.net/manual/en/language.variables.scope.php给出了$obj = &new stdclass;
的一个例子。
怎么会这样?new stdclass
不是命名变量!
谢谢。。。
new
构造有点特殊,有引用:
$obj = &new stdclass;
事实上,不建议再这样做了(这是PHP 4代码),你应该这样写:
$obj = new stdclass;
然而,为了论证和您的问题,也有引用返回shy;传递所述命名变量作为函数返回值的Docs:
$obj = &someFunction();
正如你所能想象的,这也可以与其他语言结构一起使用。重要的一点是,如果有引用,就必须有一些变量。如果没有变量,PHP中就不能有引用。
这里有一点解释:http://www.php.net/manual/en/language.references.whatdo.php
"相同的语法可以用于返回引用的函数和新运算符(从PHP 4.0.4开始,在PHP 5.0.0之前):"