クラスとメソッドの動的使用
PHPでは大胆な事ができます。
インスタンスメソッドを呼ぶ
PHP
- class ClassA {
- function method() {
- print 'method';
- }
- }
- // 大文字小文字は区別しない
- $className = 'classa';
- $methodName = 'method';
- $obj = new $className();// new ClassA();
- $obj->$methodName();// $obj->method();
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));// こちらがベスト
まとめ
いずれも非常に便利です。
クラス名や関数名を文字列で登録しておくだけで実行できます。
GDのバージョンによって、画像処理関数を切り替えたい時にも使えます。
又、登録モード、削除モード、検索モードなど、モード毎に1つの関数を呼ぶ便利な使い方もできます。わざわざ、if (登録モードなら) なんて分岐せずに済みますね。







