【问题标题】:Can I somehow chain methods in PHP我可以以某种方式在 PHP 中链接方法吗
【发布时间】:2023-03-18 15:07:02
【问题描述】:

基本上,我正在寻找一种可以优化以下内容的方法。 不是真正的 PHP 程序员,在 Ruby 世界中这很容易,但目前我有这个:

if(count($methods) == 1) {
    $resp = $this->$methods[0];
}
else if(count($methods) > 1) {
    $resp = $this->$methods[0]->$methods[1];
}

有什么方法可以在这里循环遍历方法数组,并将它们链接在一起吗?

谢谢!

【问题讨论】:

  • $methods 函数还是数组?
  • $methods 是一个函数数组吗?
  • “方法”是指您要调用的函数,还是您要访问的属性?您显示的是属性访问,而不是方法调用。
  • 如果你调用的方法返回一个类的实例或你访问的属性包含一个类的实例,你可以链接它们。
  • 这些方法是否真的需要“链接”,即针对前一个的返回值运行?还是只想在单个对象实例上运行一组方法名称?

标签: php


【解决方案1】:

你想要的本质上是一个数组缩减:

$resp = array_reduce($methods, function ($o, $p) { return $o->$p; }, $this);

不清楚您是想要$o->$p(属性访问)还是$o->$p()(方法调用),但您可以弄清楚。

【讨论】:

  • 正如我上面所说,是的,它们是属性,让我来玩一下你在这里展示的内容。
猜你喜欢
  • 2015-07-05
  • 1970-01-01
  • 2012-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-22
  • 2021-09-03
  • 2023-02-14
相关资源
最近更新 更多