[英]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.