<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.3.3" -->
<rss version="0.92">
<channel>
	<title>MT312 &#187; クラスとメソッドの動的使用</title>
	<link>http://www.mt312.com</link>
	<description></description>
	<lastBuildDate>Sun, 07 Sep 2008 15:33:23 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>ja</language>
	
	<item>
		<title>クラスとメソッドの動的使用</title>
		<description>PHPでは大胆な事ができます。
インスタンスメソッドを呼ぶ
[php]
class ClassA {
  function method() {
    print 'method';
  }
}

// 大文字小文字は区別しない
$className = 'classa';
$methodName = 'method';
$obj = new $className();// new ClassA();
$obj->$methodName();// $obj->method();
[/php]
staticメソッドを呼ぶ
インスタンスメソッドと若干異なります。
[php]
class ClassA {
  function method() {
    print 'method';
  }
}

// 大文字小文字は区別しない
$className = 'classa';
$methodName = 'method';
$className::$methodName();// parse error
eval("$className::$methodName();");// evalを使えばOK
call_user_func(array($className, $methodName));// こちらがベスト
[/php]
まとめ
いずれも非常に便利です。
クラス名や関数名を文字列で登録しておくだけで実行できます。
GDのバージョンによって、画像処理関数を切り替えたい時にも使えます。
又、登録モード、削除モード、検索モードなど、モード毎に1つの関数を呼ぶ便利な使い方もできます。わざわざ、if(登録モードなら)なんて分岐せずに済みますね。 </description>
		<link>http://www.mt312.com/php/37/</link>
			</item>
</channel>
</rss>
