【PHP】在PHP中实现方法链

首先或首先开始

使用Laravel或查询构建器时,我经常见到以下类似的代码。

$user = DB::table('users')
            ->where('name', 'John')
            ->first();

这段代码看起来不是很容易看懂,是吗?
很直观地理解到,这段代码是获取users表中name为John的一条记录。
作为一名2年级的Web工程师,我希望能写出易于调用的代码,感觉很重要。

方法连锁

今天的话题是使用->来实现方法链的讨论。

class Calculator {

    private $result;

    public static function create(int $int): Calculator {
        return new Calculator($int);
    }

    private function __construct(int $int) {
        $this->result = $int;
    }

    public function plus($int): Calculator {
        $this->result += $int;
        return $this;
    }

    public function minus($int): Calculator {
        $this->result -= $int;
        return $this;
    }

    public function getResult(): int {
        return $this->result;
    }
}
$result= Calculator::create(10)
                    ->plus(5)
                    ->minus(7)
                    ->getResult();
var_dump($result); // int(8)

– 点数 shù)
– 分数 shù)
– 点
– 得分 (dé

    • plus(), minus()関数内でreturn $thisをしている。つまり自身のインスタンスを返却している。

 

    getReasult()関数で、プロパティを返却している。

优点

    呼び出し元のコードが読みやすくなる。

什么时候使用它?

    ある値に対して、同属の処理を行いたい時。今回でいうと、plus(), minus()。

填補

    • create()をstaticにし、その関数内でnewをすることで、呼び出し元でnewをしなくて良くなるため、可読性が上がる

 

    __constructorをprivateすることで、呼び出し元でnewできなくしている
广告
将在 10 秒后关闭
bannerAds