[PHP-users 11630] Re: コンストラクタ引数にオブジェクトを

fumiyaKitamura php-users@php.gr.jp
Wed, 20 Nov 2002 23:49:44 +0900


こんばんはキタムラです。

>> class tst2{
>>    var $Ref;
>>    function tst2(&$OBJ){  //参照渡し
>>      $this->Ref = $OBJ;
>>    }
>> }
>
> $this->Ref = &$OBJ;
>
> では?

ありがとうございます!!
class tst2{
   var $Ref;
   function tst2(&$OBJ){    //参照渡し
     $this->Ref = &$OBJ;    //もう一回参照渡し
   }
}
でうまく行きました。
助かりました!!

でも...う〜ん、うまく行ったのはいいんですがイマイチ腑に落ちません。
なんで引数を参照渡しにしてコンストラクタ内でも参照渡しにする必要
があるのかがどうも納得できないです。


以下のコードまでは試してみました
class tst2{
   var $Ref;
   function tst2($OBJ){    //ここは値渡し
     $this->Ref = &$OBJ;   //ここは参照
   }
}

たとえば以下のコードだとパラメタに設定しているオブジェクトの内容
が書き変わります。
class tst{
   function tst(&$OBJ){
     $OBJ->mem = 'from tst';  //オブジェクトの参照でアクセスできる
   }
}

なので、パラメターで参照(オブジェクトのアドレス)は来てるから、後
はパラメタ値をメンバ変数にコピーすればいいだろうと考えたんです。


まぁ、納得できなくても「ここはこうするんだ」と覚えればプログラムは
作れるんですけど。

=================<F.Kitamura>=================
E-Mail  : fkit@sys238.jp
---
The greatest enemy of man is alcohol.
But, The Bible tells us to love our enemy.
==============================================