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