2015-07-06 66 views
1

我想執行包含靜態函數調用PHP執行字符串包含靜態函數調用

$string="ClassName::function()"; 

讓 類名= ABC &函數的字符串= ABC
所以

$string="ABC::abc()"; 

功能ABC返回一個數組

現在我想要的是

$array=$string; 

其應該執行$字符串和存儲陣列返回到$陣列

+0

@Uchiha我認爲OP要eval。但每個人都在濫用它 – splash58

+0

它不工作時執行顯示解析錯誤:語法錯誤,意外的文件結尾 –

+0

@ splash58是的,你說得對 –

回答

3

您可以使用eval,但極其謹慎使用此。

$string = 'Class::function();'; 
$array = eval($string); 
+0

它不工作 當執行顯示 解析錯誤:語法錯誤,意外的文件結尾 –

+1

'$ string'後面有分號嗎?分號工作夥計 – vonUbisch

+0

。非常感謝幫助。我犯了多麼愚蠢的錯誤。 –

0

試試這個,直接通過設置類名稱調用靜態方法是一個變量:

$classname = 'ABC'; 
$array = $classname::abc(); 
+0

執行時顯示不工作解析錯誤:語法錯誤,文件意外結束 –

+0

@AshwaniShukla檢查編輯 – KAD

+0

看到標記的答案 –

0

可以使用這種異乎尋常的結構,以避免使用eval

class ABC { 

    static function abc_func() { 
    echo 'abc'; 
    } 
} 
$string="ABC::abc_func()"; 

$i = preg_split('/::|\(\)/', $string); 

$i[0]::{$i[1]}(); // abc echoed