[PHP-users 124] Re: 配列の中のオブジェクトのメソッドを呼ぶには?
Osamu Shigematsu
php-users@php.gr.jp
Tue, 19 Jun 2001 17:11:00 +0900
重松です。
BAC さん、いつもお世話になります。
> > はい、一度代入しないとうまくいかないついでというわけではありませんが、現
状
> > is_object で調べています。
>
> [PHP-jp 12184]
代入の件ですが、ちょっと私にはこの事象と今回の事象との関連、というか、配列の
動作原理がいまいち理解しきれていません。もう少し、追求してみます。
> [PHP-jp 12143]
>
> ここらへんにヒントがありませんか?
<?php
class foo{
function p($v){ print "Hello, $v!"; }
};
class bar{
var $data = array();
function start(){
$this->data = array();
$this->data["a"] = 1;
$this->data["b"] = new foo;
}
function dispach($s,$n,$v){
$m = $this->data[$n];
if(is_object($m)){
if(isset($m->$s))
$m->$s($v);
else
die("error: unknown function");
}elseif(isset($m)){
switch($s){
case "p" :
print $m;
break;
default:
die("error: unknown function");
}
}
}
};
$i = new bar;
$i->start();
$i->dispach("p","b","world");
?>
とするとうまくいきました。