【问题标题】:OOP PHP Class calling function1()->function2() from one line callOOP PHP 类从一行调用调用 function1()->function2()
【发布时间】:2017-04-07 21:44:50
【问题描述】:

我处于一个新的困境中,并且一直在尝试使用它,除了错误,我什么也没得到,但我有一些决心学习如何去做,经过一番搜索后看起来不可能按照我的意愿去做。

类中有两个或多个函数(每个函数都可以单独调用[sp]):

public function functionOne($some_var){
    some other code to be run;
}
public function functionTwo($some_other_var){
    some other code to be run after functionOne(), not called here;
}

来自调用者(模型):

$tClass = new TestClass();
$result = tClass->functionOne()->functionTwo();
echo $result;

这甚至可以通过 php 实现吗?我知道它可以在像 Laravel 这样的框架中工作,这是我了解它的地方。这会很好......所以我问我是否做错了?或者甚至有可能,如果我可以在哪里寻找更多信息,因为谷歌关于这个主题的信息非常少。

【问题讨论】:

  • 它被称为“流利的接口”,链中的每个方法都返回$this
  • @MarkBaker :: 成功了 谢谢你,我也想感谢你回复并告诉我正确的名字,它在随后的谷歌搜索中有所帮助

标签: php function class oop


【解决方案1】:

这被称为fluent interface,只要你的方法运行,它就会一直工作

return $this;

让所有的二传手都流利起来应该是一个很好的做法。我倾向于说唯一不能流畅的方法是你的 getter,否则,所有其他方法都非常适合流畅的界面。

class calculator {
    private $result = 0;

    public multiplication($number) {
        $this->result *= $number;
        return $this;
    }

    public addition() {
        $this->result += $number;
        return $this;
    }

    /* ... */

    public getResult() {
        return $this->result;
    }
}

用法:

$calculator = new calculator();
echo $calculator->addition(10)->multiplication(2)->getResult(); // 20

【讨论】:

  • 让我看看谢谢 :)
  • 它工作了谢谢 - 我测试并导致了一个固定的呼叫...谢谢你的回复,我也想感谢你的重播,并告诉我引用我的正确方法是什么正在尝试做,我做了更多的谷歌搜索,发现关于这个主题的大量阅读:)
猜你喜欢
  • 1970-01-01
  • 2018-04-03
  • 2018-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多