[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");

?>

とするとうまくいきました。