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

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

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

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

staticメソッドを呼ぶ

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

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

まとめ

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

  • Search

Copyright (c) 2004-2008 MT312 All Rights Reserved.
Powered by WordPress ME