2012-08-27 29 views
-1

我通過這個PHP OOP調用一般功能eachtime

public static function CSS() { 

     $filenames = array(
      "css/tableStyles.css"=>"function1()", 
      "css/resetCSS.css"=> "function2()" 
     ); 
     foreach ($filenames as $filename=>$method){ 
      CSS::$method; 
     } 


    } 

    public function1(){ 
//do something 
    } 


    public function2(){ 
//do something else 
    } 

} 

我得到一個運行時錯誤嘗試循環。 任何提示?

編輯: 感謝arxanas,

答案是:

$filenames = array(
       "css/tableStyles.css"=>"function1", 
       "css/resetCSS.css"=> "function2" 
      ); 
      foreach ($filenames as $filename=>$method){ 
       CSS::$method(); 
      } 
+0

錯誤的文字是什麼? – dnagirl

+0

哪個運行時錯誤? –

+0

爲什麼不把Arxanas標記爲你的問題的答案。 – Emile

回答

4

是否CSS::function1甚至還存在?你沒有顯示它。無論如何,你不應該在你有function1()的地方有括號。相反使用

$filenames = array(
    "css/tableStyles.css"=>"function1", 
    "css/resetCSS.css"=> "function2" 
); 
foreach ($filenames as $filename=>$method){ 
    CSS::$method(); 
} 
+0

謝謝!工作 – devmonster

+0

嗨再次,arxans,我嘗試了更多的這個函數的聚合 - >我想要傳遞類名稱,然後調用它=>「css/tableStyles.css」=>「CSS :: function1」,「css/tableStyles .js「=>」JS :: function5「,但它不起作用。 – devmonster

+0

@devmonster這是一個新問題,所以你應該開始一個新的問題來回答它。 –

1

您需要將function1和function2定義爲靜態。

public static function1(){ 
//do something 
    } 


    public static function2(){ 
//do something else 
    } 
0

您不能從靜態方法調用非靜態方法。您需要像靜態方法那樣定義function1function2。而且你也稱財產不是方法。

public static function CSS() { 

     $filenames = array(
      "css/tableStyles.css"=>"function1()", 
      "css/resetCSS.css"=> "function2()" 
     ); 
     foreach ($filenames as $filename=>$method){ 
      CSS::$method(); 
     } 


    } 

    public static function1(){ 
//do something 
    } 


    public static function2(){ 
//do something else 
    } 

}