[PHP-users 18929]Re: $thisの扱い、代替手段について
Takeo Matumoto
hac20680 @ rio.odn.ne.jp
2003年 11月 14日 (金) 20:29:46 JST
お世話になります、松本です。
大変失礼しました(汗
参照渡しか、値渡しなのかを確認するため、
先ほどのコードに少し手を加えてみました。
<?php
class test1{
var $a = "testtest";
var $b = "TESTTEST";
function getA(){
return $this->a;
}
function getB(){
return $this->b;
}
function setA($a){
$this->a = $a;
}
function setB($b){
$this->b = $b;
}
function createTest2(){
return new test2($this);
}
}
class test2{
var $a;
var $b;
function test2($test1){
$this->a = $test1->getA();
$this->b = $test1->getB();
/* test2の初期化と同時に$test1のフィールドの値を変更
test1インスタンスのフィールドが変更されるか否か?
*/
$test1->setA('AAAAAA');
$test1->setB('BBBBBB');
}
function getA(){
return $this->a;
}
function getB(){
return $this->b;
}
}
$test1 = new test1();
$test2 = $test1->createTest2();
$a = $test2->getA();
$b = $test2->getB();
print($a);
print($b);
print($test1->getA());//test1インスタンスのフィールドが変更されたか?
print($test1->getB());
?>
以上を実行すると
testtestTESTTESTtesttestTESTTEST
のような結果が得られました。
そこで、$test2のコンストラクタの引数を参照渡しにすると
($this → &$this)
testtestTESTTESTAAAAAABBBBBB
として、期待した結果を得ることができました。
以上により、当初の問題は解決致しました。
皆様ご教授、有難うございました。
--
Takeo Matumoto <hac20680 @ rio.odn.ne.jp>
PHP-users メーリングリストの案内