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

Masaaki Kikuzawa php-users@php.gr.jp
Thu, 21 Nov 2002 13:12:42 +0900


菊澤 です。

もう回答はでてますけど、ちょっとだけ。
代入演算子でオブジェクトはコピーされるので注意が必要です。

代入演算子でのオブジェクトコピーの例
class classA {
  var $mem;
}

$orig = new classA();
$copy = $orig;

$orig->mem = "original";
$copy->mem = "copy";
echo "orig->mem = {$orig->mem}<br>";
echo "copy->mem = {$copy->mem}<br>";

結果表示:
orig->mem = original
copy->mem = copy

これを踏まえると

On Wed, 20 Nov 2002 23:49:44 +0900
fumiyaKitamura <fkit.s@sys238.jp> wrote:
> >> class tst2{
> >>    var $Ref;
> >>    function tst2(&$OBJ){  //参照渡し
> >>      $this->Ref = $OBJ;
> >>    }
> >> }

1.$OBJは、引数変数を参照していまます。
2.$this->Ref = $OBJ; の代入行で引数変数のオブジェクトを
    コピーします。

このため、引数変数のメンバーを変更しても、tst2オブジェクトの
Refのメンバーは、影響を受けません。

参考までに。

--------------------------------------------
菊澤 正明 mailto:kikuzawa@coo-co-ltd.co.jp
(株)空 Coo co.,ltd. http://www.coo-cyber.com