【问题标题】:php multiple dynamic callsphp多个动态调用
【发布时间】:2014-07-30 23:05:06
【问题描述】:

我知道可以像这样动态调用一种方法

$function = 'foo';
$bar = new Bar();
$bar->$function();

我想要实现的是多次调用,就像我收到未知数​​量的订购方法一样,我必须从一个对象调用它们。我得到例如'foo', 'bar', 'bro',我必须动态地做$object->foo()->bar()->bro()

有可能吗?我知道 call_user_func 但我不认为它可以解决这个问题...... 非常感谢!

【问题讨论】:

  • 如果你认为你需要这样做,那你就错了。
  • 我正在使用 symfony,并使用 ajax 来修改属性。问题是我的实体有孩子,等等,我想要一个通用函数
  • 请参考我之前的评论。 :)
  • 如果你有一些像 $main->setName() 和一些 $main->getChild()->getFriend()->setHeight() 这样的对象,你会怎么做?
  • 我不知道。我不知道你想要达到什么目的。我确实知道您正在破坏Law of Demeter,并且将来您会因为这样做而讨厌您,就像其他必须调试您的代码的人一样。

标签: php dynamic methods call


【解决方案1】:

您可以遍历函数并将它们应用于每个结果:

$arr = array('foo','bar','bro');
$object = getTheObject();
$res = $object;
foreach($arr as $funcName){
    $res = $res->$funcName();
}

但是这种代码让人做噩梦,因为它真的不是很清楚发生了什么。考虑使用其他方法来满足您的需要。

【讨论】:

  • 对不起,重点是我最后总是有一个集合,比如 $foo->getBar()->setBro();我不能让它工作-编辑-我的错,我犯了一个简单的错误。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2012-07-17
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
  • 2016-10-27
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
相关资源
最近更新 更多