Back to questions
Middle+
11
Как называется паттерн цепочки вызовов в Laravel (User::where()->orderBy()->get()) и что технически делают методы внутри него, чтобы цепочка работала?
Companies where asked
CSSSR
Answer from AI
sobes.tech AI
Этот паттерн называется "Цепочка вызовов" (Method Chaining). В Laravel, например, в Eloquent ORM, методы вроде where(), orderBy(), get() реализованы так, что каждый из них возвращает объект самого запроса (обычно $this), позволяя вызывать следующий метод на том же объекте.
Технически каждый метод изменяет внутреннее состояние объекта (например, добавляет условия, сортировку и т.д.) и возвращает этот же объект. Это позволяет накапливать параметры запроса последовательно, а в конце, например, get() выполняет запрос и возвращает результат.
Пример упрощённой реализации:
class Query {
protected $conditions = [];
protected $order = null;
public function where($field, $value) {
$this->conditions[] = [$field, $value];
return $this; // возвращаем текущий объект для цепочки
}
public function orderBy($field) {
$this->order = $field;
return $this;
}
public function get() {
// здесь формируется и выполняется SQL на основе $conditions и $order
return "Результат запроса";
}
}
$query = (new Query())->where('id', 1)->orderBy('name')->get();