我可能应该这样做,但我以前从未见过这个。在查看 Smarty 插件的文档时遇到了它。
$smarty =& new Smarty;
特别是 =& 符号。如果您在 Google 中输入它,它会被忽略,就像任何其他搜索引擎一样。这是做什么用的?
此函数签名也是如此:
function connect(&$smarty, $reset = false)
为什么要用 & 符号?
实际上,编写此代码是为了与 PHP 4 兼容。& 符号在 PHP 5 中毫无用处(正如 Tim 所说 - 从 PHP 5 开始,所有对象都通过引用传递)。
在 PHP 4 中,所有变量都是按值传递的。
如果你想通过引用传递它,你必须声明一个引用赋值:
$ref_on_my_object =& new MyObject();
PHP 5 默认配置仍然接受此代码,但最好编写:
$ref_on_my_object = new MyObject(); // Reference assignment is implicit
对于你的第二个问题,问题“几乎”相同......
因为 PHP 允许您声明函数参数(或类型),但您不能声明返回值。
一种可接受的但“不太好”的做法是避免在函数声明中进行引用声明:
function foo($my_arg) {
// Some processing
}
并致电提供参考...
$my_var;
$result = foo( &$my_var );
// $my_var may have changed because you sent the reference to the function
理想的声明更像是:
function foo( & $my_input_arg ) {
// Some processing
}
然后,调用会丢失 & 符号:
$my_var;
$result = foo( $my_var );
// $my_var may have changed because you sent the reference to the function
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)