クラスとメソッドの動的使用

PHPでは大胆な事ができます。

インスタンスメソッドを呼ぶ

PHP

  1. class ClassA {
  2.   function method() {
  3.     print 'method';
  4.   }
  5. }
  6. // 大文字小文字は区別しない
  7. $className = 'classa';
  8. $methodName = 'method';
  9. $obj = new $className();// new ClassA();
  10. $obj->$methodName();// $obj->method();

staticメソッドを呼ぶ

インスタンスメソッドと若干異なります。

PHP

  1. class ClassA {
  2.   function method() {
  3.     print 'method';
  4.   }
  5. }
  6. // 大文字小文字は区別しない
  7. $className = 'classa';
  8. $methodName = 'method';
  9. $className::$methodName();// parse error
  10. eval("$className::$methodName();");// evalを使えばOK
  11. call_user_func(array($className, $methodName));// こちらがベスト

まとめ

いずれも非常に便利です。
クラス名や関数名を文字列で登録しておくだけで実行できます。
GDのバージョンによって、画像処理関数を切り替えたい時にも使えます。
又、登録モード、削除モード、検索モードなど、モード毎に1つの関数を呼ぶ便利な使い方もできます。わざわざ、if (登録モードなら) なんて分岐せずに済みますね。

コメントは受け付けていません。