[PHP-users 33703] Re: 参照渡しについて

KOYAMA Tetsuji koyama @ hoge.org
2008年 6月 25日 (水) 00:39:46 JST


小山です。

2008/6/25 kaz <okui @ sannet.ne.jp>:
> マニュアルをみたら「推奨される方法は、関数宣言時に参照渡しとするべき引数を指定する」とありますがこれはどうやるんでしょうか?

function hoge($param) {
  // 省略
}

という定義のときに

$a = 1;
hoge(&$a)

という書き方はマニュアルにあるように推奨されません。

推奨される書き方は

function hoge(&$param) {
  // 省略
}

$a = 1;
hoge($a)

のように、関数の定義時に引数を参照で宣言する手法です。

> それに関数コール時に参照で引数を渡すことはやめたほうがいいというような事が書かれていますがphp5からは参照渡しが標準になったということを考えるとなんだかよくわかりません。ご教授お願いします。

関数に参照で引数を渡すことそれ自体は別に否定されている訳ではありません。参照で引数を
渡して関数内で中身を書き換えてもらうことは、普通によく使われる手法です。

問題なのは最初の例のように、関数の定義側で参照として引数を宣言していないにも
関わらず、呼び出し側で & をつけて参照渡しにすることです。

-- 
 小山哲志@ビート・クラフト
 koyama @ beatcraft.com
 koyama @ hoge.org


PHP-users メーリングリストの案内