2009-01-27 49 views

回答

15

還不知道,現在有一個建議(現在可用)__callStaticDocs方法在最後我知道。否則__call和其他__魔術方法不可用於任何對象的實例。

8

你必須使用其他神奇的方法,__callStatic - 這是隻有在PHP> = 5.3,尚未實際發佈呢。

+0

導入時需要注意的是不可用。 – David 2009-01-27 02:45:09

0

如前所述,沒有神奇的靜態調用者。但是你可以這樣編碼:

class First { 
     public static function test1(){ 
      return 1; 
     } 
     public static function test2(){ 
      return 2; 
     } 
    } 


    class Second { 
     public static function test1(){ 
      if(func_num_args()>0){ 
       return func_get_args(); 
      } 
      return 21; 
     } 
     public static function test2(){ 
      return 22; 
     } 
    } 

    class StaticFactory { 
     public static function factory($class, $method){ 
      if(func_num_args()>2){ 
       $args = func_get_args(); 
       array_shift($args); 
       array_shift($args); 
       return call_user_func_array(array($class,$method), $args); 
      }else{ 
      return call_user_func_array(array($class,$method), array()); 
      } 
     } 
    } 

    print_r(StaticFactory::factory("Second", "test1", 1, false, true)); 

    print_r(StaticFactory::factory("First", "test1"));