1. リファレンスリターン
参照リターンは、関数を使用して参照をバインドする必要がある変数を見つけたい場合に使用されます。パフォーマンスを向上させるために戻り参照を使用しないでください。エンジンはそれ自体を最適化するのに十分な機能を備えています。正当な技術的理由がある場合にのみ参照を返してください。参照を返すには、次の構文を使用します:
[php]
クラス foo {
パブリック $value = 42;
パブリック関数 &getValue() {
$ this-> の値を返します。
}
}
$obj = 新しい foo;
$myValue = &$obj->getValue(); // $myValue は $obj->value への参照であり、42 です。
$obj->値 = 2;
echo $myValue; // $obj->value の新しい値、つまり 2 を出力します。
?>
上記はPHPマニュアルによる説明でわかりやすいです
[php]
関数&test(){
static $b = 0 //静的変数を宣言します
$b = $b+1;
$b."
" をエコーします。
戻る
}
$a = test(); //$b の出力値は次のとおりです: 1
$a = 5;
$a = test(); //$b の出力値は次のとおりです: 2
$a = &test(); //$b の出力値は次のとおりです: 3 **注意**
$a = 5 //$b の値は 5 になります
$a = test(); //$b の出力値は次のとおりです: 6 **注意**
?>
$a = test() 参照返却メソッドで関数が定義されていますが、この通常の状況で関数を呼び出すと、その関数は通常の関数と同じであるため、結果は 1 と 2 になります
$a = &test() この呼び出し方法は、$a = &$b と同様に参照によって返されます。次に、2 番目の文で $a = 5 が設定されます。これは、変数 $b = 5 を変更するのと同じです。最後の文6で何が得られるのかがわかりやすい!
パラメータの受け渡しとは異なり、ここでは両方の場所で & 記号を使用する必要があります。通常のコピーではなく参照が返されることを示し、また $a が通常の代入ではなく参照としてバインドされていることを示します。 www.2cto.com
注: return ($this->value); のような関数から参照を返そうとした場合、参照される変数ではなく式の結果を返そうとしているため、これは機能しません。参照変数を返すことができるのは関数からのみであり、他に方法はありません。コードが動的式または new 演算子の結果を返そうとすると、PHP 4.4.0 および PHP 5.1.0 以降では E_NOTICE エラーが発行されます。
2. 引用を解除します
参照の設定を解除すると、変数名と変数の内容の間のバインドが解除されるだけです。これは、変数の内容が破壊されることを意味するものではありません。例:
[php]
$a = 1;
$b =& $a;
設定を解除($a)
?>
$b の設定は解除されず、$a のみが解除されます。
これと Unix のリンク解除呼び出しを類推すると、理解が容易になるかもしれません。
http://www.bkjia.com/PHPjc/477760.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/477760.html
技術記事
1. 参照リターン 参照リターンは、関数を使用して参照をバインドする必要がある変数を検索する場合に使用します。パフォーマンスを向上させるために戻り参照を使用しないでください。エンジンは自動的に最適化するほど賢いので...
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。