gpt4 book ai didi

php - 我以前从未遇到过的 PHP 符号

转载 作者:行者123 更新时间:2023-12-02 05:21:23 27 4
gpt4 key购买 nike

我可能应该有,但我以前从未见过。在查看 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com