[PHP-users 377] クラスの中のクラスのメンバの中身が消える

ikeyasu php-users@php.gr.jp
Fri, 29 Jun 2001 01:55:26 +0900


初めまして、池内康樹と申します。
最近PHPを始めたばかりです。以下のようなソースで疑問を感じました。
-----
<HTML>
<HEAD>
<TITLE>Test</TITLE>
</HEAD>
<BODY>

<?php

class Test
{
  var $data;
  function Test(){
    $this->data = new TestData;
  }
  function getTest(){
    return $this->data;
  }
}
class TestData
{
  var $name="Nothing";
  function TestData()
  {
  }
  function setName($input){
    $this->name = $input;
  }
  function getName(){
    return $this->name;
  }
}

$a = new Test();
$b = $a->getTest();
$b->setName("test.");
echo $b->getName() . "<BR>";
echo $b->getName() . "<BR>";
$c = $a->getTest();
echo $c->getName() . "<BR>";
?>
</BODY>
</HTML>
-----

としたとき、想定する結果は、
-----
test.
test.
test.
-----
なのですが、実際は
-----
test.
test.
Nothing
-----
に出力されます。
すなわち、最初にgetTestをしたときに得た、インスタンスには設定した値がちゃ
んと入っているのに、次にgetTestで得たインスタンスには値が入っていません。

これはバグなのでしょうか?それとも仕様なのでしょうか。
トンチンカンな質問かもしれませんが、お願いします。
------------------------------------------------------------------------
舞鶴工業高等専門学校 電気工学科 学生 /  池内 康樹 / yasuki@bigfoot.com
------------------------------------------------------------------------