Остановить эхо родительской функции

Допустим, в PHP у вас есть класс Parent:

<?php
class Parent {

    public function speak()
    {
        // Do bunch of stuff
        $output = outcomeOfAbove();
        echo $output;
    }

}

А у вас есть класс Child:

<?php
class Child extends Parent{

    public function speak()
    {
        parent::speak();

        echo 'Hello from child';
    }

}

Теперь предположим, что я хочу, чтобы содержимое $output в функции Child говорило (), есть ли способ перехватить выходные данные parent::speak(); и остановить эту функцию от эха? Зная, что вы не можете изменить класс "Родитель".

1 ответ

Решение

Вы можете использовать функцию буферизации вывода PHP:

  public function speak()
  {
    ob_start();
    parent::speak();
    $parent_output = ob_get_contents();
    ob_end_clean();

    echo 'Hello from child';
  }

}

Для получения дополнительной информации см. Руководство по PHP.net.

Удачи;)

Другие вопросы по тегам