【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できなくしている