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

kaz okui @ sannet.ne.jp
2008年 6月 25日 (水) 09:11:11 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 mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
> 


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