我可能应该有,但我以前从未见过。在查看 Smarty 插件的文档时遇到了它。
$smarty =& new Smarty;
特别是 =& 符号。如果你在谷歌中输入它,它会被忽略,就像任何其他搜索引擎一样。这是做什么用的?
这个函数签名也是如此:
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 允许您声明函数参数(resp。类型),而您不能为返回值这样做。 一个被接受但“不太好”的做法是避免在函数声明中引用声明:
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
关于php - 我以前从未遇到过的 PHP 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1859133/