[PHP-users 10344] Re: 引数の参照渡し( call byreference ) 廃止予定について

Yasuo Ohgaki php-users@php.gr.jp
Wed, 25 Sep 2002 19:14:25 +0900


大垣です。

# 収束してすが、コメントだけ

Call time pass by referenceには大きな問題があります。
モジュール関数の引数を無理矢理Pass by Referenceで渡したり
できるのですが、これが問題になります。また、call time
pass by referenceを使ったコードはメンテナンス性が非常に
落ちます。

PHP4はパフォーマンス向上の為にpass by referenceを使う
必要はありません。Reference countという機能(pass by
referenceと関係なし)があるため、pass by valueで渡し
てもPHPが各変数にもっている内部参照カウンタがインクリメント
されるだけです。pass by valueで渡した場合のパフォーマンス
ロスは0以下です。実際、pass by referenceの方が、
pass by valueより遅い場合があります。

# 実は逆のケースもあるのですが、気にするほどではありません。

PHP4では変更した引数を戻す必要がある場合にだけpass by
valueを使うべきです。

PHP4のオブジェクトを代入するとコピーされます。しかし、実際
にはreference count機能により参照カウンタがインクリメント
されるだけなので、ほとんどの状況でパフォーマンスが落ちたり
困った状況になることはありません。困る場合は、本格的なOOPを
する場合くらいです。

--
Yasuo Ohgaki