スレッド表示 | フラット表示〕 全トピック 923 件中 106 番目 次≫ ≪前

オブジェクトについて

created: 2007-07-28 17:10 | modified: 2007-07-30 16:50 | reply: 3

[3828] オブジェクトについて

user: volks | created: 2007-07-28 17:10
いつもお世話になっております。
volksです。

オブジェクトの扱い方?で挙動が変わる事があって原因がつかめない事があります。テストをしてみて現象を再現してみたのですが、やはりどうなっているのか検討がつきませんでした。もしよろしければ、アドバイス頂ければと思います。

以下のサンプル1と2のコードですが、私は同じ出力結果を出すと考えて作成したのですが、結果は違いました。
$オブジェクト['○○○']
という使い方についての事になるかと思うのですが、アドバイスお願いできますでしょうか。


-------------------------------------------------
サンプル1
-------------------------------------------------

<?php
class Test{
var $name;

function setName($name) {
$this->name = $name;
}
}

class Info{
var $tObj;

function setClass(){
$tObj['member01'] = new Test();
$tObj['member01']->setName('yamada');
$this->tObj = $tObj;
}

function editName4Member01($name){
$Copy = $this->tObj;
$Copy['member01']->setName($name);
print 2;
print_r($Copy['member01']);
}

function getObj(){
return $this->tObj;
}
}

$Obj = new Info();
$Obj->setClass();

//出力
$names = $Obj->getObj();
print 1;
print_r($names);

$Obj->editName4Member01('sato');


//出力
$names = $Obj->getObj();
print 3;
print_r($names);

?>
-------------------------------------------------
サンプル1出力結果
-------------------------------------------------
1Array
(
[member01] => test Object
(
[name] => yamada
)

)
2test Object
(
[name] => sato
)
3Array
(
[member01] => test Object
(
[name] => sato
)

)

-------------------------------------------------
サンプル2
-------------------------------------------------

<?php
class Test{
var $name;

function setName($name) {
$this->name = $name;
}
}

class Info{
var $tObj;

function setClass(){
$tObj['member01'] = new Test();
$tObj['member01']->setName('yamada');
$this->tObj = $tObj;
}

function editName4Member01($name){
$Copy = $this->tObj['member01'];
$Copy->setName($name);
print 2;
print_r($Copy);
}

function getObj(){
return $this->tObj;
}
}


$Obj = new Info();
$Obj->setClass();

//出力
$names = $Obj->getObj();
print 1;
print_r($names);

$Obj->editName4Member01('sato');


//出力
$names = $Obj->getObj();
print 3;
print_r($names);

?>
-------------------------------------------------
サンプル2出力結果
-------------------------------------------------

1Array
(
[member01] => test Object
(
[name] => yamada
)

)
2test Object
(
[name] => sato
)
3Array
(
[member01] => test Object
(
[name] => yamada
)

)
-------------------------------------------------
reply: 3829 返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 923 件中 106 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑