2013-02-17 53 views
1

這是我想做的事: 我有一個對象PHP可以調用我所沒有的功能與call_user_func

class TestObject { 
     public function __call($name,$args){ 
     if($name == 'somemethod'){ 
      print "Yesssss!!!!!!"; 
     } 
     } 
} 

比代碼我打電話這種方法是這樣的:

$obj = new TestObject() 
$obj->somemethod() // should work according to http://www.php.net/manual/en/language.oop5.overloading.php#object.call 
call_user_func(array('myobject','somemethod')) // this does not work!!! 

有沒有辦法讓最後一個例子工作?

+0

您是否嘗試過'陣列($ OBJ '的someMethod');'? – 2013-02-17 16:26:51

回答

0

您可以使用

call_user_func(array($obj,'somemethod')); 

$method = 'somemethod'; 
$obj->$method(); 
+0

call_user_func(array($ obj,'somemethod')); - 這不會調用未知方法 – 1099511627776 2013-02-17 16:28:39

+0

如果它不存在,它會調用'__call'方法。 – Vatev 2013-02-17 16:31:31

+0

$ obj - > $ method(); - 問題是我不能使用這種類型的呼叫。我需要使用call_user_func – 1099511627776 2013-02-17 16:31:54

0
$obj_name = 'myobject'; 
$method_name = 'somemethod'; 
${$obj_name}->${$method->name()}; 
相關問題