考虑:
$smarty =& SESmarty::getInstance();
Run Code Online (Sandbox Code Playgroud)
有什么&
用?
Tyl*_*ter 32
它通过引用传递.这意味着它不会创建传递的值的副本.
请参阅:http: //php.net/manual/en/language.references.php(参见Adam的答案)
通常,如果你传递这样的东西:
$a = 5;
$b = $a;
$b = 3;
echo $a; // 5
echo $b; // 3
Run Code Online (Sandbox Code Playgroud)
$a
如果更改第二个变量($b
),则不会修改原始变量().如果您通过引用传递:
$a = 5;
$b =& $a;
$b = 3;
echo $a; // 3
echo $b; // 3
Run Code Online (Sandbox Code Playgroud)
原件也改变了.
传递对象时没用,因为默认情况下它们将通过引用传递.
在PHP 4中,它有点(笨拙地)关联两个变量.
$j = 'original';
$i =& $j;
$i = 'modified';
echo $j; // The output is 'modified'
Run Code Online (Sandbox Code Playgroud)
同样...
$j = 'original';
$i =& $j;
$j = 'modified';
echo $i; // The output is 'modified'
Run Code Online (Sandbox Code Playgroud)
对于PHP 5中的对象,其中一些不那么令人不愉快,但我认为它的核心是相同的,所以这些示例应该仍然有效.