@Viplayer

Как из класса в 1 строку вызвать 2 функции?

Учу пыху и заметил во многих репозиториях гитхаба такую конструкцию :

$a = new A ();
$a->lol('params')->kek('cheburek');


Подскажите, что это, как создавать и работать с этим, когда используется?
  • Вопрос задан
  • 96 просмотров
Решения вопроса 5
delphinpro
@delphinpro
frontend developer
class Calc {
  private $number = 0;
  public function __construct($n){
    $this->number = $n;
  }
  public function plus($n){
    $this->number += $n;
    return $this;
  }
  public function minus($n){
    $this->number -= $n;
    return $this;
  }
  public function result(){
    return $this->number;
  }
}

echo (new Calc(100))->plus(50)->minus(75)->result(); // 75
Ответ написан
@d-sem
Цепочка вызовов. Для этого нужно возвращать $this. Или другой объект.
Ответ написан
PavelK
@PavelK
Называется "method сhaining".
Суть - из функции класса возвращается объект текущего класса (или любого другого):
public function A()
{
   ...
   return $this;
}
Ответ написан
27cm
@27cm
TODO: Написать статус
Пример 1
class A
{
    public function lol($params) {
        // ...
        return $this;
    }

    public function kek($params) {
        // ...
        return $this;
    }
}


Пример 2
class A
{
    public function lol($params) {
        $b = new B();
        // ...
        return $b;
    }
}

class B
{
    public function kek($params) {
        // ...
    }
}


В обоих случаях сможете писать такую цепочку:
$a = new A();
$a->lol('params')->kek('cheburek');
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы