function &referenceFunc() { static $foo = ''; return $foo; }//将静态变量$foo的引用传递给$name$bar = &referenceFunc();$bar .= "hello";//作为普通函数调用echo referenceFunc();//删掉引用unset($bar);//作为普通函数调用$bar = referenceFunc();$bar .= " world";//$foo并不会发生变化echo referenceFunc();
PHP の関数参照は、関数の戻り値の参照を受け取り側の変数に返すものですが、関数の宣言時や呼び出し時に値演算子 & を使用する必要がありますが、呼び出し時に通常の関数として直接使用することもできます。 (現時点ではそのような関数はありません) 関数参照の特徴、受け取った変数はメモリ内の新しいアドレスを指します)、その他にはパラメーター参照 (値渡し/参照渡し)、オブジェクト参照が含まれます
クラスのカプセル化を突破する
class Reference { private $foo; public function &referenceFoo() { return $this->foo; } public function getFoo() { echo $this->foo . "<br>"; }}$obj = new Reference();//将私有变量绑定在了一个普通变量$bar上$bar = &$obj->referenceFoo();//外部操作私有变量$bar .= "access the private var in outside";//输出'access the private var in outside'$obj->getFoo();
もちろん、関数参照はこれらのことを行うために使用されるわけではありません。関数参照の主な目的は、操作を容易にするために現在のオブジェクトのプロパティに追加のエイリアスをバインドできるようにすることです
「&」演算子を使用する必要があることに注意してください定義または呼び出し時に使用されます。それ以外の場合は、通常の関数またはメソッドとして呼び出されます