[PHP-users 20208]Re: コピーせずにリファレンス渡しになる

T.Okabe okabe @ nsd.jip.co.jp
2004年 2月 3日 (火) 11:57:40 JST


岡部といいます。

>いしげ です.
>
>「リファレンスに関してこういう仕様なんだ」と言われればそれまでですが……
>この辺りの挙動について,どこかの文書で定義されているのか,
>単に「決まってないから不定」なのか,ご存知の方がいたら教えてください.

確かに、マニュアルに載っているのは、
リファレンスによる返り値を用いる場合には、
関数と、代入するところで、
「両方の場所で&を使用する必要があります」
ということだけです。

つまり、
1.関数定義に & を付けず、代入は =& とした場合。(今回のケース)
2.関数定義に & を付けて、代入は = とした場合。
については未記述ということですね。

私もこの件について、何か本当は定義された仕様があるのか、知りませんが、
とりあえず、実験の限りでは、いずれの場合も
「両方の場所で&を使用する」場合と同じ結果が得られました...
(環境:Win2K+PHP4.3.4)

あるクラスの設計者と、クラスを利用するコードの設計者・書き手が
異なる場合には、クラスの設計者がコピーを渡そうとしたのに、
リファレンスにされてしまう、という問題が起こる可能性はありますね。


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