@ademar26

Как понять вызов нескольких методов в одном экземпляре класса php?

За пример возьмем библиотеку PHPExcel.
Интересует один момент, а именно как понять к примеру вызов нескольких методов в 1 объекте.

К примеру
$col = $PHPExcel_file->getActiveSheet()->getCellByColumnAndRow('3', $i)->getValue();
  • Вопрос задан
  • 384 просмотра
Решения вопроса 1
@EvgeniiR
https://github.com/EvgeniiR
Гуглите fluent interface.

Реализуется так:
class A 
{
  function func1() {
    //some stuff
    return $this;
  }

  function func2() {
    //some stuff
    return $this;
  }
}

$a = new A();
$a->func1()->func2();
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
t-alexashka
@t-alexashka
Сразу пишу legacy код
основной смысл цепочки (или жидкого интерфейса как его называют еще) чтобы методы которые состоят в этой цепочки - на выходе возвращали ссылку на свой класс, чтобы следующий метод в цепочке мог понять с чем ему работать.
return $this;

нужно только для сокращения строк кода и читаемости.
Ответ написан
Комментировать
@Chupaka
Только мне кажется, что жидкий интерфейс — это хорошо, но в данном примере речь вовсе не об этом?..

$PHPExcel_file->getActiveSheet() возвращает объект Sheet, у которого дальше вызывается метод ->getCellByColumnAndRow('3', $i), возвращающий объект Cell, и уже у этого объекта вызывается ->getValue(), что и получает нужное значение.

А пример fluent interface для PHPExcel был бы, например, таким:
$objPHPExcel->getActiveSheet()->setCellValue('A1', "Here we go")
->setCellValue('A3', "Number:")
->setCellValue('B3', "10")
->setCellValue('A5', "List:")
->setCellValue('B5', "Item A");
Ответ написан
Ваш ответ на вопрос

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

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