当我们使用&
在函数中的参数中,这意味着如果我们在该函数内更改变量,则该变量不会在函数外更改。
<?php
function add_10(&$number)
{
$number +=10;
}
$our_lovely_number = 10;
add_10($our_lovely_number);
echo $our_lovely_number; // outputs 20
?>
不是吗?
但当我遇到插件时,我看到了&
在构造函数中使用。这意味着什么?
像这样
//this is constructor function
add_action(\'admin_init\', array(&$this, \'adminInit\'));
我试图通过“wordpress hooks中的行为和含义”搜索google,但我什么也看不到
最合适的回答,由SO网友:JxAxMxIxN 整理而成
在本例中,您只需创建一个数组array(&$this, \'adminInit\')
哪里array[0]
现在引用任何内容$this
是,并且array[1] = \'adminInit\'
.
我相信这个案子$this
引用您所在的类(用&;this表示),然后adminInit
很可能是该类中的函数(方法)。因此,当admin_init
碰巧它知道访问adminInit()
在当前类中的函数。
&;变量的前面表示它是该变量的引用(指针),而不是实际值。当然,调用时它仍将返回值,但它的返回方式有点像打开文件的快捷方式。下面是一个帮助您理解的示例。
$variable1 = "one"; //set $variable1
$variable2 = &$variable1; //make $variable2 reference $variable1
echo $variable1; //echos "one"
echo "<br>";
echo $variable2; //echos "one"
echo "<hr>";
$variable1 = "two"; //only change the value of $variable1
echo $variable1; //echos "two"
echo "<br>";
echo $variable2; //echos "two"
echo "<hr>";
$variable2 = "three"; //only change the value of $variable2 (which is actually $variable1 by reference)
echo $variable1; //echos "three"
echo "<br>";
echo $variable2; //echos "three"
echo "<hr>";
另一种理解方式是。。。
function change_reference( &$ref ){
$ref = "two";
}
$var1 = "one";
change_reference( $var1 );
echo $var1; //will echo "two"
你可以从这里开始
http://php.net/manual/en/language.references.whatare.php 然后使用参考文献解释菜单链接进行深入挖掘。