Как реализован вызов метода через метод?

253
09 марта 2018, 16:10

иногда встречаю такой код

$a = new A;
$a->method1()->method2();

как реализовать method2 и что это по сути замыкание или колбэк ?

Answer 1

Просто метод method1 возвращает экземпляр объекта класса. Таким образом $a->method1() является тем же самым объектом A, с которыми совершили какие-то действия этом методе. Это не является ни колбеком, ни замыканием.

class A {
    public function method1() {
        // какой-то код
        return $this; // возвращает сам себя
    }
    public function method2() { 
        // какой-то код
        return $this;
    }
}
$a = new A();
$a->method1()->method2();

Такую структуру используют скорее для удобства. Если бы методы не возвращали объект, то конструкция выглядела бы

$a = new A();
$a->method1();
$a->method2();
READ ALSO
Сортировка файла php

Сортировка файла php

У меня в файле есть текст по такому типу:

237
Вывод данных из ответа API

Вывод данных из ответа API

Возвращается посредством API ответ:

247
Запоминание введенных пользователем данных в MySQL таблицу

Запоминание введенных пользователем данных в MySQL таблицу

Всем доброго времени суток! Есть необходимость передать в MySQL таблицу данные, введенные им в inputJavascript не подходит, так как нужно сразу передать...

237
смена языка в футере вордпресса

смена языка в футере вордпресса

Ребятакак поменять язык в футере вордпресса? чтобы он менялся при переключении на другой язык?я использую плагин polylang

223