在PHP中,如何';通过引用分配';使用这个新的stdclass


In PHP, how does 'assign by reference' work with this new stdclass?

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之前):"