久々にPHPネタを書きます。
といっても参照渡しって他の言語でもあるかと思いますが、、、長い目でみてください。
▶︎参照(リファレンス)渡しとは
引数の渡し方の一つ。
引数の渡し方では、「参照渡し」以外に、
ごく一般的でよく見る普通の引数の渡し方に「値渡し」がある。
まず、ごく一般的でよく見る普通の引数の渡し方の
「値渡し」を見ていきます。
/** * 数値型を文字列型に変更する * * @param integer $number * @return string $number */ function convertString($number) { //return (string)$number;のが冗長ではないが、そこは我慢。 $number = (string)$number; return $number; } $a = 1; convertString($a); var_dump($a); //int(1) 返り値を$aに格納していないため、$a = 1のまま $b = 2; $b = convertString($b); var_dump($b); //string(1) "2"
その後に、「参照渡し」を見てみる。
//PHP5.4.0から仕様変わったやーつー。※今回はPHP5.5を想定 /** * 数値型を文字列型に変更する * * @param integer $number * @return string $number */ function convertString_reference(&$number) { $number = (string)$number; return $number; } $c = 3; //PHP5.4.0以前ではconvertString_reference(&$c)でも呼べる convertString_reference($c); //$numberと$cがニコイチとなる。 var_dump($c); //string(1) "3" $d = 4; //$numberと$dがニコイチ(同等)となる。 $d = convertString_reference($d); var_dump($d); //string(1) "4"
参照渡しをすると、ニコイチになれる!
ニコイチってもう古いんかな?昔はやってたからいい例えと思って使ってみたw
参照渡しで渡された引数は、関数内のローカル変数と同等になる。
片方が+1されると、他方も+1される、まさしくニコイチ!
影響範囲を考えないと使いにくそうで、自から使ったことはまだないですが、
使えるいいタイミング見つけてみたいと思います。