2011-05-29 34 views
3

爲什麼我的動態方法usersMethod不返回任何結果? 頁面始終爲空。使用動態方法

<?php 
class SampleClass 
{ 
    public function __call($name, $args) 
    { 
     $m = $this->methods(); 

     eval($m['usersMethod']); 
    } 

    public function methods() 
    { 
     $methods = array(
      'usersMethod'=>'$a=2; return $a;', 
      'membersMethod'=>'$a=1; return $a;' 
     ); 

     return $methods; 
    } 
} 
$sample = new SampleClass(); 
echo $sample->usersMethod(); 
?> 
+0

你應該真的改變__call()來使用傳入的名字和參數,而不是硬編碼它。 – 2011-05-29 14:36:13

回答

4

您需要返回的eval值:

return eval($m['usersMethod']); 

(見this answer

2

你必須在代碼片段將被用來作爲 「功能」 的return聲明。但是這個返回值只會通過eval()發送值。您還需要返回評估結果:

return eval($m['usersMethod']); 

只有這樣,內部$ a纔會通過__call()方法調用返回。