简体   繁体   English

调用动态方法

[英]Call dynamic method

Let's suppose that I have a class with a method getWorkDays() that returns an Object. 假设我有一个带有方法getWorkDays()的类,该方法返回一个Object。 That object has other methods like setMonday($val) , setTuesday($val) .. 该对象还有其他方法,例如setMonday($val)setTuesday($val)

What I'm trying to do is to call those methods dynamically: 我正在尝试做的是动态调用这些方法:

$weekDays = array('sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday');

foreach($weekDays as $weekDayName){                
    call_user_func($obj->getWorkDays()->set{ucfirst($weekDayName)}, array(1));     
}

Any idea what I'm doing wrong? 知道我在做什么错吗? Or how can I do this? 或者我该怎么做?

Thanks in advance 提前致谢

here the code: 这里的代码:

$weekDayName = ucfirst($weekDayName);
$obj->set{$weekDayName}();

it seems that you are on right track. 看来您步入正轨。 you have syntax error in calling set() method. 您在调用set()方法时遇到语法错误。 you have missed () in this method calling. 您在此方法调用中错过了() it should be something like this: 应该是这样的:

call_user_func($obj->getWorkDays()->set{ucfirst($weekDayName)}(), array(1));

or you can split it out: 或者您可以将其拆分:

$objFirst = $obj->getWorkDays();
$params = $objFirst->set{ucfirst($weekDayName)}();

call_user_func($params,array(1));

Try this: 尝试这个:

$day = ucfirst($weekDayName);
$method = "set{$day}"; 
call_user_func($obj->getWorkDays()->$method, array(1));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM