PHP: Как называется данная цепочка функций?

128
03 января 2021, 05:00

Подскажите пожалуйста как называется данная цепочка функций и как её организовать?

/*class Example*/
(new Example)->functionOne()->functionTwo();

и возможна ли такая связка?

/*class Example*/
(new Example)->functionOne($one)->functionTwo($two);

Лучше будет если направить на литературу. Я либо плохо гуглил, либо что-то не заметил.

Answer 1

Такой приём называется чейнингом. Можете почитать о нём, например на хабре.

Его суть заключается в том, что методы возвращают ссылку на экземпляр объекта. Это может быть как объект, в котором этот метод вызывался (как у вас в примере), так и любой другой.

/**
 * Все методы класса Example возвращают ссылку на себя
 */
class Example {
    function exampleFunctionOne() {
        echo "exampleFunctionOne\n";
        return $this;
    }
    function exampleFunctionTwo() {
        echo "exampleFunctionTwo\n";
        return $this;
    }
}
/**
 * Метод класса Example2 принимает в качестве аргумента экземпляр
 * класса Example и возвращают ссылку на него
 */
class Example2 {
    function example2FunctionOne($example) {
        echo "example2FunctionOne\n";
        return $example;
    }
}
$e = new Example();
$e->exampleFunctionOne()->exampleFunctionTwo();

$e2 = new Example2();
$e2->example2FunctionOne($e)->exampleFunctionTwo();
READ ALSO
Скрипт PHP выполняется сам почему?

Скрипт PHP выполняется сам почему?

Коллеги, добрый день! Подскажите есть скрипт записи в файл при нажатии на кнопку на phpПроблема в том, что это скрипт выполняется периодически...

119
Как передать form'е несколько объектов в Java Spring + Thymeleaf?

Как передать form'е несколько объектов в Java Spring + Thymeleaf?

Предположим у меня есть 3 абсолютноо разные сущности (entities): - User - Customer - Address

103
Таймер в Firebase

Таймер в Firebase

Можно ли как-нибудь сделать таймер в Firebase Firestore, чтобы через день после создания удалялась запись?

110
Написать компаратор по двум полям

Написать компаратор по двум полям

Есть объекты с двумя полями - String uuid и String fullNameИзначально компаратор был написан для сортировки по uuid,

92